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