PHP:获取收件人ID

时间:2010-11-04 22:08:48

标签: php mysql

嘿,所以我的表单中有一个收件人字段,您可以输入用户名,例如“john derek”。

现在我将其分解为$ firstname和$ lastname

list($firstname, $lastname) = array_map('ucfirst', explode(' ', $recipient, 2));

如果有任何完全匹配,我如何检查数据库,取得ID。

表用户的列名为“firstname”和“lastname”

如果这一半匹配,如果只存在名字(john)或姓氏(derek)而不是两者,则回显“你的意思是:John Derek?”;

$qur = mysql_query('
 SELECT id, firstname, lastname, 
 (firstname = "$firstname" AND lastname = "$lastname") AS full FROM users 
 WHERE (firstname = "$firstname" AND lastname="$lastname") 
 OR (firstname LIKE "$firstname%" AND lastname LIKE "$lastname%")
 ORDER BY (firstname = "$firstname" AND lastname="$lastname") DESC');
 $get = mysql_fetch_array($qur);
 echo $get["full"] ."<br>";

我没有得到任何东西,即使$ firstname是“John”而$ lastname是“Derek”

也尝试过:

echo $get["id"];
echo $get["lastname"]
echo $get["firstname"]

好像没找到任何东西?有什么问题?

1 个答案:

答案 0 :(得分:0)

最简单的方法是执行LIKE查询:

 SELECT id, firstname, lastname FROM users 
 WHERE firstname LIKE "$firstname%"
 AND lastname LIKE "$lastname%"

(当然不要忘记对变量进行消毒)

此匹配的用户输入:

Jo De
J Derek
John D

它会给你一个结果。但是,如果搜索John Der,有John DerekJohn Der,则无法保证John Der将首先出现。要实现这一点,您必须首先检查文字匹配:

 SELECT id, firstname, lastname, 
 (firstname = "$firstname" AND lastname="$lastname") AS full FROM users 
 WHERE (firstname = "$firstname" AND lastname="$lastname") 
 OR (firstname LIKE "$firstname%" AND lastname LIKE "$lastname%")
 ORDER BY (firstname = "$firstname" AND lastname="$lastname") DESC

这将首先给出完全匹配,然后给出部分匹配。

可能需要进一步调整,但它应该是一个开始。