電子書籍の厳選無料作品が豊富!

MySQLとphpの勉強中です。
コードは下記のようにしています。
SQL文の条件に合ったレコードがなければprintの箇所を表示させたくない場合はどのようにすれば良いでしょうか?

$sql = 'SELECT * FROM game WHERE scorer LIKE '.$scorer;

  print "条件の合うレコードがなければここを表示させたくない。";

foreach ($dbh->query($sql) as $row) {
}

ご存知の方いらっしゃいましたらご教示ください。
よろしくお願いします。

A 回答 (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なのに%もないし、そもそもプレースホルダを使わないんでしょうかねぇ・・・。
    • good
    • 0
この回答へのお礼

お礼日時:2014/07/08 23:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!