2007.10.29 Mon

mysql_query() のカン違い

mysql_query()を使ってPHPからqueryを実行する場合 処理が実行されたかを判定するために

$query = mysql_query($sql);
if($query == true){
/* 正常に実行 */
}

と今までしていたのですが、 === で比較したほうが早いということを知り

$query = mysql_query($sql);
if($query === true){
/* 正常に実行 */
}

としてみたらエラー連発・・・・
何でだろうと思ったリファレンスに書いてあるじゃないですか・・・

SELECT, SHOW, DESCRIBE や EXPLAIN 文では、 mysql_query() は成功した場合に resource を返します。エラー時には FALSE を返します。
それ以外の SQL 文 UPDATE, DELETE, DROP などでは、 mysql_query() は成功した場合に TRUE 、エラー時に FALSE を返します。

== のときは気づかなかったのですが、SELECT, SHOW, DESCRIBE や EXPLAIN 文では処理が正常に実行できた場合は resource を戻り値として返してくれていたのね・・・。

なるほど。戻り値の型が違うからエラーになっていたということですね。

全て true false で帰ってくると思っていました。危ない危ない・・・


 mysql_query

システム構築に関する覚書トップページへ