[英]INNER JOIN : where clause is too ambiguous
I am getting the error "Integrity constraint violation: 1052 Column 'restaurant_id' in where clause is ambiguous' in"
. 我收到错误
"Integrity constraint violation: 1052 Column 'restaurant_id' in where clause is ambiguous' in"
。
a) How do I use bindparam on JOIN? a)如何在JOIN上使用bindparam? Is that even the problem causing this error?
甚至是导致此错误的问题吗?
function restaurant(PDO $dbh, $username) {
global $dbh;
$stmt = $dbh->prepare("
SELECT *
FROM users u
INNER JOIN menues m
ON u.user_id = m.restaurant_id
INNER JOIN users_slider s
ON m.restaurant_id = s.restaurant_id
WHERE restaurant_id = :restaurant_id
");
$stmt->bindParam(":restaurant_id", $_GET['r']);
$stmt->execute();
return $stmt->fetchAll();
}
Change 更改
...
WHERE restaurant_id = :restaurant_id
to 至
...
WHERE m.restaurant_id = :restaurant_id
^^
请使用m.restaurant_id
或s.restaurant_id
在根据您的表格状况可以解决您的问题的地方。
Always use alias for avoiding conflict in join query . 在连接查询中始终使用别名以避免冲突。 Here
restaurant_id
should be m.restaurant_id
. 在这里
restaurant_id
应该是m.restaurant_id
。
Try this query :- 试试这个查询:-
SELECT *
FROM users u
INNER JOIN menues m
ON u.user_id = m.restaurant_id
INNER JOIN users_slider s
ON m.restaurant_id = s.restaurant_id
WHERE m.restaurant_id =:restaurant_id
put where condition like WHERE m.restaurant_id = :restaurant_id 放在条件如WHERE m.restaurant_id =:restaurant_id
function restaurant(PDO $dbh, $username) {
global $dbh;
$stmt = $dbh->prepare("
SELECT *
FROM users u
INNER JOIN menues m
ON u.user_id = m.restaurant_id
INNER JOIN users_slider s
ON m.restaurant_id = s.restaurant_id
WHERE m.restaurant_id = :restaurant_id
");
$stmt->bindParam(":restaurant_id", $_GET['r']);
$stmt->execute();
return $stmt->fetchAll();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.