我花了好几个小时尝试从不同的表中选择所有行,但仍然没有运气。我得到了:
column name firstname is ambiguous
这些表没有任何关系,我只想选择所有行,因为我需要查询所有表来搜索匹配的字符串。我有搜索栏。
是否有更好的方法可以从列数不匹配的多个表中选择所有行。我试过了UNION ALL
,但它给了我一个错误。请帮忙
$mydb = new mysqli('localhost', 'root', '', 'db');
$stmt = $mydb->prepare("SELECT * FROM `table1` t1 JOIN `table2` t2 ON joinitem.t1 = joinitem.t2 where firstname = ? ");
stmt->bind_param('s', $firstname);
echo $mydb->error;
$stmt->execute();
答案 0 :(得分:1)
尝试在WHERE
子句中具体,如
SELECT * FROM `table1` t1
JOIN `table2` t2 ON t1.joinitem = t2.joinitem
WHERE t1.firstname = ?
答案 1 :(得分:0)
由于您的两个表中都有列firstname
,因此出现了该错误。如果不指定您的firstname
,SQL无法判断您是否希望查询基于table1的firstname或table2的firstname。
要确保SQL知道您的意思,请在列名前加上表名。
此外,我认为JOIN
条件应为tablename.joinitem
而不是joinitem.tablename
。
以下示例假定您想要的firstname
来自table2
:
SELECT *
FROM `table1` t1
JOIN `table2` t2 ON t1.joinitem = t2.joinitem
WHERE t2.firstname = ?