簡體   English   中英

PDO參數化查詢不返回任何內容

[英]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中,因此連接可以正常工作。

兩個問題。

  1. 我在這段代碼中做錯了什么?

  2. 假設我可以使代碼正常工作。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM