Php Mysql中的列分组/连接

Php Mysql中的列分组/连接,php,mysql,sql,Php,Mysql,Sql,更新 我自己解决了这个问题: 我更新了下面的代码,如果有人需要这样做,并在这里登陆 我有一个小的MySQL数据库,我在那里搜索用户 SELECT *, kunde.id as kundeid FROM kunde INNER JOIN $bartype ON ($bartype.brugerid = kunde.id) WHERE $bartype.barid ='$barid[Barid]' AND (email LIKE '%$keyword%') OR (fornavn

更新

我自己解决了这个问题:

我更新了下面的代码,如果有人需要这样做,并在这里登陆

我有一个小的MySQL数据库,我在那里搜索用户

SELECT *, kunde.id as kundeid
FROM kunde
INNER JOIN $bartype ON ($bartype.brugerid = kunde.id)
WHERE  $bartype.barid ='$barid[Barid]' AND
    (email LIKE '%$keyword%') OR
    (fornavn LIKE '%$keyword%') OR
    (efternavn LIKE '%$keyword%') OR
    (CONCAT_WS(' ', fornavn, efternavn) LIKE '%$keyword%')
LIMIT 0, 50;
现在我的搜索功能可以工作了,但只适用于
“%$KEYORD%”如fornavn或“%$KEYORD%”如efternavn或“%$KEYORD%”如电子邮件

因此,我想对类似的结果进行分组,以便在一个字符串中搜索“fornavn efternavn”时,仍然会显示来自同一行中这两列的结果

这有意义吗?是否可以修改我的SQL语句来实现这一点


提前感谢

要想做您想做的事情,您可能需要尝试一个
联合
语句。union语句将获取一个查询的结果,并将其添加到另一个查询的结果中,同时保留顺序(在我的示例中,包含电子邮件的结果将首先出现,然后是fornavn,然后是efternavn)。这样做还将消除可能阻止搜索结果出现的
和/或
逻辑

SELECT *, kunde.id as kundeid
FROM kunde
INNER JOIN $bartype ON ($bartype.brugerid = kunde.id)
WHERE  $bartype.barid ='$barid[Barid]' AND
    email LIKE '%$keyword%'
UNION ALL
SELECT *, kunde.id as kundeid
FROM kunde
INNER JOIN $bartype ON ($bartype.brugerid = kunde.id)
WHERE  $bartype.barid ='$barid[Barid]' AND
    fornavn LIKE '%$keyword%'
UNION ALL
SELECT *, kunde.id as kundeid
FROM kunde
INNER JOIN $bartype ON ($bartype.brugerid = kunde.id)
WHERE  $bartype.barid ='$barid[Barid]' AND
    efternavn LIKE '%$keyword%'
另一方面,像这样的动态SQL适合SQL注入。我可以建议你调查一下吗

更新

在您的评论之后,这里有一个更新的查询,可以为您同时执行两个搜索:

SELECT *, kunde.id as kundeid
FROM kunde
INNER JOIN $bartype ON ($bartype.brugerid = kunde.id)
WHERE  $bartype.barid ='$barid[Barid]' AND
    email LIKE '%$keyword%'
UNION ALL
SELECT *, kunde.id as kundeid
FROM kunde
INNER JOIN $bartype ON ($bartype.brugerid = kunde.id)
WHERE  $bartype.barid ='$barid[Barid]' AND
    fornavn + ' ' + efternavn LIKE '%$keyword%'

您听说过SQL注入吗?您混合了
,这意味着您可能遇到了操作顺序陷阱。最有可能的解释是
(a和b)或c或d或e
。另外,我希望您已经正确地清理/转义了$keyword和$barid,否则当有人用一个。2个问题:1)为什么每个条形图类型都有相同的表,而不是一个带有
bartype
列的表?2) 当你们说“fornavin efternavn”时,这是一个你们想分成两个关键字来搜索的短语,还是一个你们想搜索的匹配列的列表?非常感谢——事实上,我确实查看了UNION,但可能从来并没有让它起作用。现在是了。但是,如果我在一个字符串“fornavn efternavn”中搜索关键字“fornavn”和“efternavn”,它不会返回任何结果。只搜索fornavn或efternavn会给我结果。所以我在想,是否有办法加入/分组这两个共谋者,并寻找匹配的人。@Bolli你能解释一下你的意思吗
fornavn
efternavn
是表中的字段。您的意思是要输入这样的搜索字符串吗<代码>值1值2
?是-如果我不清楚,我很抱歉。让我再试一次。Fornavn和Efternavn是指frontname和lastname。用我上面的SQL,当搜索“Jennifer Lopez”时,没有显示任何内容,但是单独搜索“Jennifer”会带来她的op或“Lopez”也会起作用。现在我也希望能够搜索“詹妮弗·洛佩兹”或者你说的Value1 Value2。这更清楚吗?@boll我看了看我的最新答案。它可能可以做你想做的。谢谢凯尔-我也找到了另一种方法,我更新了我的第一篇帖子。谢谢你的帮助!