2 回答
TA贡献2041条经验 获得超4个赞
我认为您的错误将在于'登录词d'options转义 SQL 引擎中的字符串。
$tabMots[0] = "d'options";
$sql.= ' WHERE (p.description LIKE \'% '.$tabMots[0].'%\'';
echo $sql;
以上将打印出:
WHERE (p.description LIKE '% d'options%'
即使从 StackOverflow 高亮显示,您也可以看到 SQL 引擎从中获得了什么。
编辑
如何切换到准备好的语句?例子:
$param = $tabMots[$i];
$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE CONCAT('%',?,'%') ");
$stmt->bind_param("s", $param);
$stmt->execute();
从这个答案复制粘贴:php mysqli Prepared statement LIKE
TA贡献1776条经验 获得超12个赞
对于那些不加思索就放 -1 的人,我想说准备好的查询并没有解决我的问题,因为它正在格式化搜索的单词。这里的问题是描述文本的格式,我进行了研究,发现插入
htmlentities() 后保留了 \n 和其他字符。但是,我不知道文本开头保留的字符。感谢您的帮助,但我已经实施了准备好的查询。因此,
当您希望 % 和单词 '%\n'.$word.'%' 之间有一个空格时,您必须添加此搜索以进行插入。在这里,您可以找到单词的词根 with
before。
- 2 回答
- 0 关注
- 151 浏览
添加回答
举报