PHPでMYSQLのデータを表示する際に

先日、回答をいただいた例を元にしたのですが

例)
SELECT A.*, B.*
FROM A
CROSS JOIN B
WHERE A.カテゴリID = 5
AND B.内容 LIKE concat( '%', A.キーワード, '%' )

Warning: Division by zero~と出てしまいます。

単純なSQLであればきちんと表示されるので
mysqlへの接続、データベースの選択はできているようです。

AND B.内容 LIKE concat( '%', A.キーワード, '%' )部分の対処が原因でこのような状態になっているのだと思いますが、こういった場合は特別な書き方が必要なのでしょうか?

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2013/04/06 11:14:59

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

>Warning: Division by zero~

php側で、1÷0のようにゼロによる除算を行った際に起こるエラーです。

$a / $b などの式であれば $b の中身がゼロの時にエラーになりますので、
例えば、下記の様な具合にエラー回避します。

if ( $b == 0 ) {
    ゼロの場合の対応
} else {
    $a / $b の計算
}

エラー発生箇所は、そのエラーメッセージの最後に、
「ファイル名 on line エラーの起こった行」といった形で示されています。


余談ですが mysqli_num_rowsなどの関数を使えば、
SQL実行結果で得られた件数を取得できますので、
結果件数によって処理を分けるということも考慮するとさらに良いでしょう。
Mysqli接続の場合はmysqli_num_rows関数
http://www.php.net/manual/ja/mysqli-result.num-rows.php
少し古くなったMysql接続の場合はmysql_num_rows関数
http://www.php.net/manual/ja/function.mysql-num-rows.php

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません