搜索字符串形成数据库表中的多列

时间:2012-10-02 06:00:48

标签: php mysql database string

在我的代码中,我想通过名字,姓氏和电子邮件字段搜索朋友。 现在我想匹配数据库表字段name.also中的确切字符串我想显示那些字段。我想得到搜索数据的id所以然后我将显示关于那个人的完整描述。我可以做什么它。 谢谢你的任何帮助。 我试试。

$term=$_POST['find'];
$searchquery=mysql_query("select firstname,lastname,email from account where output LIKE %$term%");

4 个答案:

答案 0 :(得分:2)

您正在寻找:

SELECT id, firstname, lastname, email
FROM account
WHERE firstname LIKE %$term%
OR lastname LIKE %$term%
OR email LIKE %$term%
LIMIT 20

请注意,您的方式存在潜在危险,您应该保护$term变量:

$term = mysql_real_escape_string($_POST['find']);

Anso注意到mysql_ *系列函数正在弃用过程中,你应该看看PDO或mysqli。

编辑:

添加了LIMIT,因为如果$term不包含任何内容,我认为您不想恢复所有数据库表。

答案 1 :(得分:1)

查询应该是这样的

$searchquery=mysql_query("select id,firstname,lastname,email from account where firstname LIKE '%$term%' OR lastname LIKE '%$term%' OR email LIKE '%$term%'");

如果您要搜索这3列(名字,姓氏,电子邮件)。

答案 2 :(得分:1)

更改您的查询以获取您想要显示的所有所需信息,并检查您在何处对照该术语。像这样:

select id, firstname, lastname, email /*, ... other fields */ from account where firstname LIKE '%$term%' OR lastname LIKE '%$term%' OR email LIKE '%$term%'

答案 3 :(得分:1)

select firstname,lastname,email from account where concat_ws(' ',firstname,lastname,email) LIKE %$term%"

会将所有三个字段视为单个字段,结果会更快