嘿,所以我的表单中有一个收件人字段,您可以输入用户名,例如“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"]
好像没找到任何东西?有什么问题?
答案 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 Derek
和John 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
这将首先给出完全匹配,然后给出部分匹配。
可能需要进一步调整,但它应该是一个开始。