作者DarkKiller (System hacked)
看板PHP
标题Re: 请多用 PDO...
时间Sun May 26 09:10:12 2013
※ 引述《DarkKiller (System hacked)》之铭言:
: 现在一般常常鼓励用 PDO 连 MySQL,主要的原因是 mysql_* 已经被 PHP 5.5+ 宣告
: 为 deprecated:
: http://jp.php.net/manual/en/function.mysql-connect.php
: 另外还有 escape 的原因而被建议用 PDO。
以往 mysql_* 在避免 SQL injection,需要处理 escape 的事情时会这样写:
$username = $_GET['username'];
$sql = sprintf(
'SELECT * FROM `user` WHERE `username` = "%s";',
mysql_escape_string($username)
);
这在 PHP 5.3+ 後被标为 deprecated,原因是 mysql_escape_string() 不知道
MySQL 连线的 charset,对於 escape 会有影响。
正确的方法是:
$username = $_GET['username'];
$sql = sprintf(
'SELECT * FROM `user` WHERE `username` = "%s";',
mysql_real_escape_string($username, $dbh)
);
其中 $dbh 是 mysql_connect() 传回的 resource。
这其实非常的... 麻烦。
PDO 因为是物件,所以就很自然而然被被绑定在物件上。
$username = $_GET['username'];
$p = $db->prepare('SELECT * FROM `user` WHERE `username` = ?;');
$p->execute(array($username));
另外一个是效能的问题...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.121.80.241