- ベストアンサー
条件が合わなかった場合の処理の飛ばし方
MySQLとphpの勉強中です。 コードは下記のようにしています。 SQL文の条件に合ったレコードがなければprintの箇所を表示させたくない場合はどのようにすれば良いでしょうか? $sql = 'SELECT * FROM game WHERE scorer LIKE '.$scorer; print "条件の合うレコードがなければここを表示させたくない。"; foreach ($dbh->query($sql) as $row) { } ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
$dbh がどういうオブジェクトなのか書かれていないので、どのAPIなのか(どういうプロパティ・メソッドがあるのか)わかりません。なので「どの手法でもできるやり方」で・・・ ループの前にprintしようとすると悩みます。1件目の表示をする直前に行えばいいんじゃないですかね。 $count = 0; foreach ($dbh->query($sql) as $row) { if ($count++ === 0) { // ++を後置しているので、比較は加算前の値で print "条件の合うレコードがあったら表示させたいヘッダ部分。"; } $row の内容を表示する } ループを抜けたあとで、対象データが1件もなかったときに何かを表示したいケースにも対応できます( $count === 0 でチェック)。 (蛇足) >$sql = 'SELECT * FROM game WHERE scorer LIKE '.$scorer; SQL文がヘンですけど・・・。likeなのに%もないし、そもそもプレースホルダを使わないんでしょうかねぇ・・・。