0
 $word ="50%";
 $searchSQL = "SELECT * FROM discounts WHERE keyword LIKE '%$word%' ";

当我执行此查询时,它不返回任何结果。我认为问题是 % 符号,它是 mysql 中的通配符。搜索该 $word 的正确方法是什么

4

3 回答 3

3

尝试这样的事情,

 $word ="50%";
 $searchSQL = "SELECT * FROM discounts WHERE keyword LIKE '%$word%' escape '%'";

作为旁注,SQL Injection如果值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-01-06T05:51:15.220 回答
2

您尝试搜索%? 如果没有,请更改keyword = '%$word%'keyword LIKE '%$word%'. 如果这样做,请%使用以下命令转义:LIKE '50\%' ESCAPE '\'":

$word ="50\\%";
$searchSQL = "SELECT * FROM discounts WHERE keyword LIKE '%$word%' ESCAPE '\' ";
于 2013-01-06T05:49:17.567 回答
1

在 MySQL 中进行查询时,您必须在特殊字符之前添加前导斜杠。所以像这样:

$word = "50\\%";
于 2013-01-06T05:49:18.253 回答