PHP

2013-11-01, php

準備済みクエリにbool値を渡す

バグなのか仕様なのか、、PDOを使った準備済みクエリに真偽値の設定には注意が必要です。数値で指定してやらないと上手く値が反映されません。

$pdo = // 省略
$sth = $pdo->prepare("UPDATE foo SET visible = ?");
$sth->execute(array(1)); // TRUE
$sth->execute(array(0)); // FALSE

// 以下は動作せず
// $sth->execute(array(TRUE));
// $sth->execute(array(FALSE));
// $sth->execute(array(“TRUE”));
// $sth->execute(array(“FALSE”));

mysqlのboolean型はtinyintのエイリアスだと分かっていればピンとくるのですが、そうでないとハマってしまうこと請け合いです。特に「PDO::PARAM_BOOL」なんて定数もあるので、BOOL型が直接使えそうだと思ってしまいます(多分、使えるべきなんでしょうけれど)。

参考URL

この記事は役に立ちましたか?