对于搜索功能,我需要能够通过组合两列来获取mysql函数以显示结果。
更确切地说:我在数据库中有一个名为"成员"因为有一个名为" firstname"一个名为"姓氏"我需要用它。当有人输入整个名字时,例如。 Jane Doe,我想让查询看看是否合并名字+空格(& nbsp?)+ lastname会带来任何结果。
到目前为止,我的代码是:
$poster = mysql_query("SELECT id FROM members WHERE (firstname' 'lastname) LIKE '%$search%'") or die(mysql_error());
$poster = mysql_fetch_object($poster);
我知道这可能是错的,这是我尝试使用第一个名字和姓氏等等方括号后的最新尝试...但是,是的,任何帮助都会非常感谢。
答案 0 :(得分:2)
使用CONCAT
功能:
SELECT id FROM members
WHERE CONCAT(firstname, ' ', lastname) LIKE ?
答案 1 :(得分:1)
尝试CONCAT
SELECT id FROM members WHERE concat(firstname, ' ', lastname) LIKE '%$search%'
答案 2 :(得分:1)
SELECT id FROM members WHERE (firstname + ' ' + lastname) LIKE '%$search%'
答案 3 :(得分:1)
我相信你要找的是:
$name_var = 'John Doe';
// Example 1 - using concatenation
$sql = "SELECT id FROM members WHERE CONCAT(firstname, ' ', lastname) = '$name_var'";
上述语句将搜索名字为John且姓氏为Doe
的所有内容这是相当低效的,因为它必须每次在mysql中评估CONCAT我相信
我建议在PHP中验证字符串是你想要的两个单词。
$name_var = 'John Doe';
// this will split the string based on spaces
$names = explode(' ', $name_var);
$first_name = $names[0];
$last_name = $names[1];
// Example 2 - searching each field
$sql = "SELECT id FROM members WHERE firstname = '$first_name' AND lastname = '$last_name'";
上述语句仍将搜索名字为John且姓氏为Doe
的所有内容在上面的陈述中,您实际上只是根据确切的值进行搜索,因此效率更高。如果要定期运行此查询,还应该在mysql表的firstname和lastname字段中添加索引,因为它会大大提高速度!
希望这有帮助!
汤姆