如何在此准备好的语句中使用通配符?

时间:2019-08-31 21:58:20

标签: php mysql prepared-statement wildcard

我正在尝试为非常基本的搜索功能编写准备好的语句。基本上,我只需要在标题包含搜索词时返回“标题”(但可能还包含比搜索词更多的单词)。

我可以在普通的mysqli中执行此操作,但不能使用准备好的语句(我需要此语句来保证安全性,对吧?)

这有效,但没有准备好的声明:

$sql = "SELECT title, description FROM quiztime WHERE title LIKE '%".$query."%' OR description LIKE '%".$query."%'";

这不起作用:

$stmt = $conn->prepare("SELECT user, title FROM quiztime WHERE title LIKE %?%");

我登录了:      PHP致命错误:未捕获的错误:

那么我该如何使其成为准备好的陈述呢?非常感谢!

1 个答案:

答案 0 :(得分:0)

您必须使用串联:

$stmt = $conn->prepare("SELECT user, title FROM quiztime WHERE title LIKE concat('%', ?, '%')");