• ベストアンサー

条件が合わなかった場合の処理の飛ばし方

MySQLとphpの勉強中です。 コードは下記のようにしています。 SQL文の条件に合ったレコードがなければprintの箇所を表示させたくない場合はどのようにすれば良いでしょうか? $sql = 'SELECT * FROM game WHERE scorer LIKE '.$scorer;   print "条件の合うレコードがなければここを表示させたくない。"; foreach ($dbh->query($sql) as $row) { } ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.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なのに%もないし、そもそもプレースホルダを使わないんでしょうかねぇ・・・。