mysql SELECT * FROM table WHERE column + space + column LIKE'%query%'

时间:2012-03-02 12:08:51

标签: mysql select

对于搜索功能,我需要能够通过组合两列来获取mysql函数以显示结果。

更确切地说:我在数据库中有一个名为"成员"因为有一个名为" firstname"一个名为"姓氏"我需要用它。当有人输入整个名字时,例如。 Jane Doe,我想让查询看看是否合并名字+空格(& nbsp?)+ lastname会带来任何结果。

到目前为止,我的代码是:

$poster = mysql_query("SELECT id FROM members WHERE (firstname'&nbsp'lastname) LIKE '%$search%'") or die(mysql_error());
$poster = mysql_fetch_object($poster);

我知道这可能是错的,这是我尝试使用第一个名字和姓氏等等方括号后的最新尝试...但是,是的,任何帮助都会非常感谢。

4 个答案:

答案 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字段中添加索引,因为它会大大提高速度!

希望这有帮助!

汤姆