【メモ】 PDOで…ちょっとはまった。


ローカル(Windows+Apache2)では問題なく動くのに、
なぜかサーバに上げると動かないって言うことがあったので一応、メモ。
なんか自分のどこが悪かったかよくわからんので(設定かなぁ)、
次起きたらまたこう対処する的なことで。


■ 環境

Linux, Apache2, PHP5.1.6, MySQL5.0.27


■ 問題のあるコード
(面倒なので適当に誤魔化してますが概要はこんなもん)

$pdo = $db->connect();

$sth = $pdo->prepare($sql);
$sth->bindParam('A', $target);
$sth->execute();

$sth = $pdo->prepare($sql);
$sth->bindParam('B', $target);
$sth->execute();

$this->conn->disconnect($pdo);
$pdo = $db->disconnect();


■ 問題点

どうやら、2回目のbindParamでスタック。bindValueでも同。


■ 対処
  • 一回の接続で複数のクエリを送らない。
$pdo = $db->connect();

$sth = $pdo->prepare($sql);
$sth->bindParam('A', $target);
$sth->execute();
$pdo = $db->disconnect();

$pdo = $db->connect();
$sth = $pdo->prepare($sql);
$sth->bindParam('B', $target);
$sth->execute();

$this->conn->disconnect($pdo);
$pdo = $db->disconnect();


『送らない』とか書いちゃってるけど、結果的にそれで動いただけで、
正しいかどうかとかよくわかんね。