看板 PHP 關於我們 聯絡資訊
※ 引述《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