首頁 > 後端開發 > php教程 > 如何在 PHP 5.1.6 使用真正的mysql预处理?

如何在 PHP 5.1.6 使用真正的mysql预处理?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-06 20:47:11
原創
1060 人瀏覽過

测试代码:

<code><?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',0,2));

    $res = $st->fetchAll();
    var_dump($res);
?>
</code>
登入後複製
登入後複製

当在 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,还是我使用的方式不对?

回复内容:

测试代码:

<code><?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',0,2));

    $res = $st->fetchAll();
    var_dump($res);
?>
</code>
登入後複製
登入後複製

当在 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.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
linux安裝mysql報錯
來自於 1970-01-01 08:00:00
0
0
0
mysql 升級後無法重新啟動mysql服務的問題
來自於 1970-01-01 08:00:00
0
0
0
MySQL停止進程
來自於 1970-01-01 08:00:00
0
0
0
phpstudy不能啟動mysql?
來自於 1970-01-01 08:00:00
0
0
0
環境中mysql
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板