2006年7月 4日

[PHP-users 29593] Re:PDO::prepareの疑問符パラメータの挙動に関して

黒田です。

下記問題ですが、
PDO::ATTR_EMULATE_PREPARES
を使うことで解決しました。

具体的には、
prepareする前に、

setAttribute(PDO::ATTR_EMULATE_PREPARES, true)
とすることで、発行不可能なプリペアステートメントを発行可能なように
エミュレートしてくれます(万能ではないようですが)。
下記のようなスクリプトになります。

$db = null;
$dsn = 'mysql:dbname=test;host=localhost';
$user = 'root';
$password = 'test';
$db = new PDO($dsn, $user, $password);
$db = setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$sql = "select * into outfile ? fields terminated by '\t' from testtable";
$stmt = $db->prepare($sql);
$stmt->execute(array("/tmp.txt"));
?>

windowsの場合に、setAttribute(PDO::ATTR_EMULATE_PREPARES, true)無しでも
prepareが成功するのは奇妙ですが、
明示的にsetAttributeしておいた方が良さそうです。

皆様ご助言ありがとうございました。

黒田映史

_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月 4日 12:37
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/38912
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。