SQL搜索从like更改为equals not working

时间:2013-09-20 07:31:26

标签: php sql where sql-like addslashes

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';

我明白这很容易被注射。

4 个答案:

答案 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)."%'";