MYSQLについて伺います。
以下のようなSQLを発行しました。```MySql
$sql = "SELECT K_Mas.url, K_Mas.seitou, K_Mas.name, K_Mas.sitigibi, (CASE WHEN K_Mas.hearing IS NULL THEN K_Mas.iinkai ELSE K_Mas.hearing END) AS aa , K_Mas.syusan FROM {$tableName} WHERE {$wh} ORDER BY K_Mas.sitigibi"; //クエリ
しかし何も表示されません。 問題なのはMYSQLの中にIF的なことをしてる部分です。 (CASE WHEN K_Mas.hearing IS NULL THEN K_Mas.iinkai ELSE K_Mas.hearing END) AS aa ここでやりたいことは フィールド「hearing」に何も入っていなければ「iinkai」を出力して 入っていれば「hearing」を出力したいのです。 ここの書き方がおかしいと思うのですが 如何ですか? <?php error_reporting(0); //エラー非表示。表示の場合は error_reporting(-1) $tableName = "K_Mas"; //テーブル名 $sql = "SELECT K_Mas.url, K_Mas.seitou, K_Mas.name, K_Mas.sitigibi, (CASE WHEN K_Mas.hearing IS NULL THEN K_Mas.iinkai ELSE K_Mas.hearing END) AS aa , K_Mas.syusan FROM {$tableName} WHERE {$wh} ORDER BY K_Mas.sitigibi"; //クエリ $dataSourceName = "mysql:host={$hostName}; dbname={$dbName}; charset={$charSet}";//データソース try{ $objPDO = new PDO($dataSourceName,$userName,$passWord,null);//$objPDO = PHP Data Objects if($objPDO == null){ print '接続に失敗しました。<br>'; } else{ //print "接続に成功しました。<br>"; print $wh; } $stmt = $objPDO -> query($sql);//$stmt = PDOStatement $columns = array();//カラム名取得 for($i = 0; $i < $stmt->columnCount(); $i++) { $meta = $stmt->getColumnMeta($i); $columns[] = $meta['name']; } print("<table><tr>");//テーブル書き出し print("<th>動画</th>"); print("<th>政党</th>"); print("<th>名前</th>"); print("<th>質疑日</th>"); print("<th>委員会</th>"); print("<th>衆参</th>"); while($result = $stmt -> fetch(PDO::FETCH_BOTH)){ print("<tr>"); //echo "$columns[$i]"; for($i=0;$i<count($columns);$i++){ if($columns[$i] == "url"){ print("<td><A href=https://www.youtube.com/watch?v={$result[$columns[$i]]} target=_blank>動画</A></td>"); } else{ print("<td>{$result[$columns[$i]]}</td>"); } } print("</tr>"); } print("</table>"); } catch(PDOException $e){ //PDOエラー表示はコメントアウトしています。↓ /*print("接続に失敗しました。<br>".$e->getMessage());*/ die(); } finally{ $objPDO = null;//オブジェクト解放 } ?>
回答1件
あなたの回答
tips
プレビュー