[PHP-users 29593] Re: PDO::prepareの疑問符パラメータの挙動に関して
Eishi Kuroda
kuroda @ jetsetrecords.net
2006年 7月 4日 (火) 12:37:28 JST
黒田です。
下記問題ですが、
PDO::ATTR_EMULATE_PREPARES
を使うことで解決しました。
具体的には、
prepareする前に、
setAttribute(PDO::ATTR_EMULATE_PREPARES, true)
とすることで、発行不可能なプリペアステートメントを発行可能なように
エミュレートしてくれます(万能ではないようですが)。
下記のようなスクリプトになります。
<?php
$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 メーリングリストの案内