如何在 PHP 5.1.6 使用真正的mysql预处理?
程序员文章站
2022-06-15 11:17:51
...
测试代码:
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$st = $pdo->prepare("select * from account where username =? limit ?,?");
$st->execute(array('buding',0,2));
$res = $st->fetchAll();
var_dump($res);
?>
当在 PHP 5.1.6 测试时,Wireshark检测到发送的语句是:
select * from account where username ='23' limit '2'
当在 PHP 5.3 测试时,Wireshark检测到发送的语句是:
select * from account where username =? limit ?
如何才能在PHP 5.1.6使用真的的mysql预处理呢?这是一个Bug,还是我使用的方式不对?
回复内容:
测试代码:
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$st = $pdo->prepare("select * from account where username =? limit ?,?");
$st->execute(array('buding',0,2));
$res = $st->fetchAll();
var_dump($res);
?>
当在 PHP 5.1.6 测试时,Wireshark检测到发送的语句是:
select * from account where username ='23' limit '2'
当在 PHP 5.3 测试时,Wireshark检测到发送的语句是:
select * from account where username =? limit ?
如何才能在PHP 5.1.6使用真的的mysql预处理呢?这是一个Bug,还是我使用的方式不对?
PHP5.3.6以前,参数绑定默认是使用PHP的预处理对参数转义。如果使用PDO,建议升级到5.3.6以后的版本,同时在DSN中指定编码。
上一篇: 类似于商城系统用PHP还是C#.NET?(以后肯定会商业用,类似于商
下一篇: 求解下面代码有啥问题