MySQL在多个表中应用通配符不起作用

时间:2018-11-25 19:40:42

标签: mysql wildcard

我正试图使搜索框可以使用mysql通配符从多个表中搜索,并将结果显示为输出。

错误代码是:

警告:mysqli_error()期望恰好1个参数,第16行的C:\ xampp \ htdocs \ test \ crud21 \ search.php中给出的参数为0

Code Image

1 个答案:

答案 0 :(得分:0)

使用UNION从多个表中获取结果并将其合并。

SELECT name
FROM bd
WHERE name LIKE '%$query%'
UNION
SELECT name
FROM info
WHERE name LIKE '%$query%'
UNION
SELECT name
FROM users
WHERE name LIKE '%$query%'

如果您确实要联接所有表,则需要分别为每个表指定名称匹配。

SELECT b.*, i.*, n.*
FROM bd AS b
CROSS JOIN info AS i
CROSS JOIN users AS u
WHERE b.name LIKE '%$query%' AND i.name LIKE '%$query%' AND u.name LIKE '%$query%'

但是,这将创建每个表中所有匹配行的叉积,很难看出您期望它如何有用。而且,如果其中任何一个表都没有匹配的行,则将产生一个空的叉积。