MySQL喜欢返回所有结果



我正试图根据来自表单的字符串过滤结果。这是我的代码。

<?php
    $query = $_GET['query']; // gets the string entered from the form.
    $userSearch = $db->prepare("SELECT id, user_id, feedback FROM `QComments` 
                                WHERE `feedback` 
                                LIKE '%$query%' 
                                ORDER BY user_id");
    $userSearch->execute();
    $userSearchResult = $userSearch->fetchAll(PDO::FETCH_ASSOC);  
?>
<?php // Display search result
    foreach ($userSearchResult as $result1){
        echo $result1['feedback']; 
    }
?>

无论我输入什么字符串,这基本上都显示数据库中的所有记录。

但是当我在PHPMYAdmin SQL框中输入这个MySQL语句时

SELECT id, user_id, feedback FROM `QComments` 
WHERE `feedback` 
LIKE '%suggestion%' 
ORDER BY user_id

我只得到含有suggestion关键字的结果。但PHP会显示所有内容。我的代码有什么问题?

像这样使用准备好的语句对我来说总是有效的。

预处理语句不只是简单地执行字符串替换。它们传输的数据完全独立于查询。只有在查询

中嵌入值时才需要引号
<?php
    $query = '%'.$_GET['query'].'%'; // gets the string entered from the form.
    $userSearch = $db->prepare("SELECT id, user_id, feedback FROM `QComments` 
                                WHERE `feedback` 
                                LIKE :query
                                ORDER BY user_id");
    $userSearch->BindParam(':query', $query);
    $userSearch->execute();
    $userSearchResult = $userSearch->fetchAll(PDO::FETCH_ASSOC);  
?>

最新更新