php / sql newbie。 尝试将LIKE名称搜索更改为精确搜索。即使使用我知道的搜索值在表中,也无法找到任何记录。
原始代码:
$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
FROM records
WHERE surname LIKE '".addslashes($name)."%';
$result = mysql_query($sch);
新代码:
$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
FROM records
WHERE surname = '".addslashes($name)."%';
$result = mysql_query($sch);
我已经尝试了我能想到的一切,包括:
WHERE surname = 'addslashes($name)';
(我不确定“每一端或%”的原因
我能让它工作的唯一方法就是我废弃了addslashes并使用: WHERE surname ='$ name';
我明白这很容易被注射。答案 0 :(得分:0)
您的%
子句中的尾随LIKE
出现在您的确切搜索中。 %
仅在使用LIKE
时才有意义,因此它正在寻找与您传递的内容完全匹配,但最后使用%
。
LIKE 'criteria%'
会发现任何与criteria
= 'criteria%'
将与该文字完全匹配,包括%。
答案 1 :(得分:0)
尝试:
$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
FROM records
WHERE surname = '".addslashes($name)."'";
$result = mysql_query($sch);
没有%
。
%
是LIKE
模式中的通配符,但是=
个中的常规字符。
答案 2 :(得分:0)
您可以将%
与LIKE
条款一起使用,只需更改以下代码即可...
$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
FROM records
WHERE surname = '".addslashes($name)."';
$result = mysql_query($sch);
答案 3 :(得分:0)
尝试使用双引号正确结束查询字符串:
$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
FROM records
WHERE surname LIKE '".addslashes($name)."%'";