mysql / sql使用一个关键字字符串搜索名字和姓氏

时间:2012-01-13 23:26:45

标签: php mysql sql

我有以下字段:firstname和lastname 关键字是$keyword 如果有人搜索:John Doe 我希望它能够返回结果。 现在它返回结果,如果它的约翰,或它的母鹿。 这是代码:

$q1 = strtolower($_GET["q"]);
$q=str_replace(" ","%",$q1);
$sql = "select DISTINCT users.*, user_id FROM users WHERE $email_filter 
firstname LIKE '%$q%' OR lastname LIKE '%$q%' ORDER BY lastname";
$rsd = mysql_query($sql);
while($rs = mysql_fetch_array($rsd)) { echo $results }

任何帮助将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您需要首字母和姓氏与您的参数匹配的情况,而不是名字或姓氏,因此它应该是名字LIKE'%$ q%'和姓氏一样'%$ q%'

请记住,由于您使用LIKE,如果名称是John Doe,Johnnie Doe,John Does,Johnnie这些将全部与其他记录一起返回,其中第一个名称包含John且姓氏包含Doe

答案 2 :(得分:0)

如果用户提供类似“John Doe”的响应,则应修剪任何额外的空格,将提供的名称分解为值,并根据您提供的代码查询它们:

$q1 = trim(strtolower($_GET["q"]));
$name = explode(" ",$q1);
$fname = $name[0];
$lname = $name[1];
$sql = "select DISTINCT users.*, user_id FROM users WHERE $email_filter 
firstname LIKE '%$fname%' OR lastname LIKE '%$lname%' ORDER BY lastname";
$rsd = mysql_query($sql);
while($rs = mysql_fetch_array($rsd)) { echo $results; }

希望有所帮助