[英]PDO parameterized query not returning anything
我正在將舊的mysql_query代碼轉換為PDO參數化查詢。 到目前為止,這就是我所擁有的。 它似乎什么也不返回。 我在phpmyadmin中嘗試了相同的查詢,並在舊代碼中使用了相同的輸入,並且該查詢以這些方式返回行。
public function searchArticle($input)
{
$db = new PDO("mysql:host=localhost;dbname=thecorrectdbname", "root", "supersecretpassword");
$statement = $db->prepare("SELECT * FROM news WHERE headline LIKE '%:title%'
OR content LIKE %:content%'
OR author LIKE '%:author%'
ORDER BY id DESC");
$statement->execute(array('title' =>$query,
'content' =>$query,
'author'=>$query));
$result = $statement->fetchAll();
print_r($result);
if (!$result || $statement->rowCount() <= 0)
{
echo'nothing in this array';
return false;
}
return $result;
}
這返回
Array ( ) nothing in this array
使用相同的$ db連接,我可以管理將數據插入到DB中,因此連接可以正常工作。
兩個問題。
我在這段代碼中做錯了什么?
假設我可以使代碼正常工作。 PDO准備好的語句返回的$ result對象在結構上是否與mysql_query $ result對象相同? 如果沒有,如何將PDO結果集轉換為mysql_query一個?
您的替換變量將被PDO自動轉義並加引號,這意味着您不能在引號內包含變量。
更改以下內容:
$statement = $db->prepare("SELECT * FROM news WHERE headline LIKE :title
OR content LIKE :content
OR author LIKE :author
ORDER BY id DESC");
$statement->execute(array('title' =>'%'.$query.'%',
'content' =>'%'.$query.'%',
'author'=>'%'.$query.'%'));
您正在無效使用占位符。 必須使用占位符代替全部價值。
$statement = $db->prepare("SELECT * FROM news WHERE headline LIKE :title
OR content LIKE :content
OR author LIKE :author
ORDER BY id DESC");
$statement->execute(array('title' =>"%$query%",
'content' =>"%$query%",
'author'=>"%$query%"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.