搜索:'chemist'
问题:查询将匹配像'onechemist'而不是'chemist'的字符串。
SELECT id,name FROM `records`
WHERE name LIKE '%". mysql_real_escape_string($q) ."%'
此替代尝试不起作用:
SELECT id,name FROM `records`
WHERE name LIKE '%". mysql_real_escape_string($q) ."%'
OR name LIKE '". mysql_real_escape_string($q) ."%'
OR name LIKE '%". mysql_real_escape_string($q) ."'
我如何将上述内容编译成一个单一的查询,该查询将匹配任何具有字符串的字段或将查询优化为更好的表达式?
答案 0 :(得分:1)
如果$q
持有'化学家',它将匹配同时也是'化学家'的name
。在这种情况下,您的第一个查询应该工作。尝试仔细检查你的价值观。
$sql = "SELECT `id`, `name` FROM `records`
WHERE `name` LIKE '%".mysql_real_escape_string($q)."%'";
PS - 您的第二个查询将获得与第一个查询相同的结果。
答案 1 :(得分:0)
您可以使用正则表达式。例如,
SELECT id,name FROM `records` where name REGEXP '^onechemist'
它会将名称以 onechemist
匹配