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

标签 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 fatal error :未捕获错误:

那么我怎样才能把它变成一个准备好的声明呢?非常感谢!

最佳答案

您必须使用串联:

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

关于php - 如何在此准备好的语句中使用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57741848/

相关文章:

PHP哈夫曼解码算法

php - 有没有办法使用 Db 实例在 prestashop 中准备 sql 语句?

php - 生成包含数据的页面而无需重新加载页面

php - 将数组传递给 PL/pgSQL 存储过程时出错

reporting - 使用 BIRT 中的报告参数设置查询 FROM 表

php - 如何在SQL中更新多列?

php - 使用PHP通过FTP下载文件夹

php - 我如何模拟唯一的验证规则?

mysql - 数据库设计的最佳方法

php - 使用MAX选择mysql数据