前提・実現したいこと
itというテーブルから'kind'が'トップス'のものを検索したあとに、'$t_color'という引数が空でなければ、抽出結果からさらに、'color'が'$t_color'のものを検索するというプログラムを書きたいです。
発生している問題・エラーメッセージ
トップスの抽出はうまくいったのですが、$t_colorが空でないときの抽出がうまくいきません。
改善点を教えてください。
該当のソースコード
php
<?php if(empty($t_color)){ $sql1 = "SELECT * FROM it where kind like 'トップス'" ; $stmt = $dbh->query($sql1); } else{ $sql2="SELECT * FROM it where kind like 'トップス' and where color like '$t_color'"; $stmt = $dbh->query($sql2); } $t=0; foreach ($stmt as $row) { $t++; echo $row['meisho']; } ?>
変更後
PHP
$sql = "SELECT * FROM it where kind like 'トップス'" ; if(empty($t_color)){ $stmt = $dbh->query($sql); } else{ $sql.="and where color like '$t_color'"; $stmt = $dbh->query($sql); } $rows=$stmt->fetch_all(MYSQLI_ASSOC); print_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
まだ回答がついていません
会員登録して回答してみよう