前提・実現したいこと
itというテーブルから'kind'が'トップス'のものを検索したあとに、'$t_color'という引数が空でなければ、抽出結果からさらに、'color'が'$t_color'のものを検索するというプログラムを書きたいです。
発生している問題・エラーメッセージ
トップスの抽出はうまくいったのですが、$t_colorが空でないときの抽出がうまくいきません。
改善点を教えてください。
該当のソースコード
php
1 <?php 2 if(empty($t_color)){ 3 $sql1 = "SELECT * FROM it where kind like 'トップス'" ; 4 $stmt = $dbh->query($sql1); 5 } 6 else{ 7 $sql2="SELECT * FROM it where kind like 'トップス' and where color like '$t_color'"; 8 $stmt = $dbh->query($sql2); 9 } 10 $t=0; 11 foreach ($stmt as $row) { 12 $t++; 13 echo $row['meisho']; 14 } 15 ?>
変更後
PHP
1 $sql = "SELECT * FROM it where kind like 'トップス'" ; 2 if(empty($t_color)){ 3 $stmt = $dbh->query($sql); 4 } 5 else{ 6 $sql.="and where color like '$t_color'"; 7 $stmt = $dbh->query($sql); 8 } 9$rows=$stmt->fetch_all(MYSQLI_ASSOC); 10print_r($rows);
[結果]
$t_colorが空の時
Array ( [0] => Array ( [meisho] => トップス1 [season] => 春 [kind] => トップス [tops] => ニット [botom] => [auter] => [onep] => [inone] => [color] => 白 [nagasa] => ミドル [sode] => 十分丈 [gara] => 無地 ) [1] => Array ( [meisho] => トップス2 [season] => 夏 [kind] => トップス [tops] => Tシャツ [botom] => [auter] => [onep] => [inone] => [color] => 青 [nagasa] => ミドル [sode] => 半袖 [gara] => プリント ) [2] => Array ( [meisho] => トップス3 [season] => 秋 冬 [kind] => トップス [tops] => カーディガン [botom] => [auter] => [onep] => [inone] => [color] => 黄色 [nagasa] => ミドル [sode] => 十分丈 [gara] => 無地 ) )
$t_colorに値が入っている時
Fatal error: Uncaught Error: Call to a member function fetch_all() on bool in
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/24 07:17
2022/01/24 07:36