2012-02-13 76 views
0

所以我希望得到一個帖子的ID,其中標題=‘$ someTitle’PDO讀取行以」

$dbh= new PDO("mysql:host=localhost;dbname=NAME",'USER','PASS', 
    array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" 
)); 


$someTitle = '\"If you\'re absent during my struggle, don\'t expect to be present during my success.\" - Will Smith'; 

$statement = $dbh->prepare("select id from posts where title = :title"); 
$statement->execute(array(':title' => $someTitle)); 
$row = $statement->fetch(); 

echo $row[id]; 

而這個例子dosent工作,但如果我$ someTitle更改爲$ someTitle ='新的測試';

每一件事情是確定的

任何提示

回答

3

不要做自己的逃逸這就是爲什麼有準備的語句,其照顧的SQL注入問題,爲你和你的?。自己逃跑在文本中,你要告訴數據庫你想在數據庫中搜索包含這些轉義的文本 - 這很可能不在那裏。

而是有:

$someTitle = '"If you\'re absent during my struggle, don\'t expect to be present during my success." - Will Smith'; 
       ^---no escape, and ditto for at the end of the line. 

請注意,我只是一直未逃過"字符。由於您使用單引號作爲字符串本身,因此必須轉義任何'以使其成爲有效的PHP字符串分配。但是,\'不會被數據庫看到,只有原始的'

+0

是的,解決它。謝謝Marc! – Ben 2012-02-13 05:23:46