我正在尝试为我的数据库构建搜索功能,但它没有返回任何结果。这就是我得到的:
$searchQuery = $_GET[q];
$search = $conn->prepare('SELECT * FROM articles WHERE title LIKE \'%:query%\' OR content LIKE \'%:query%\'');
$search->bindParam(':query', $searchQuery, PDO::PARAM_STR);
$search->execute();
$searchResult = $search->fetchAll();
foreach($searchResult as $row) {
print "<h2><a href=\"view.php?a=" . $row[id] . "\">" . $row[title] . "</a></h2>";
}
当我直接用$conn->query('SELECT...')
执行SQL语句时,它可以很好地工作,但不能使用准备好的语句。我没有收到错误,它只是没有加载任何结果。我错过了什么?
编辑:将通配符从预处理语句移动到绑定变量,如下所示:
$searchQuery = '%' . $_GET[q] . '%';
$search = $conn->prepare('SELECT * FROM articles WHERE title LIKE :query OR content LIKE :query');
现在完美运作。谢谢!