[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 メーリングリストの案内