我的代码是:
<?php
$pdo = new PDO("mysql:host=example;dbname=test;","test","test");
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$st = $pdo->prepare("select * from account where username =? limit ?");
$st->execute(array('buding',2));
$res = $st->fetchAll();
var_dump($res);
?>
当我在PHP 5.1.6上使用它时,我看到通过Wireshark发送到mysql的sql是:
select * from account where username ='23' limit '2'
但是在PHP 5.3上,sql是:
select * from account where username =? limit ?
(我想要的)
如何使用真正的PDO准备?这是PHP的错误,还是我用错了方法?
我的MySQL版本是5.0.7。