[英]INNER JOIN : where clause is too ambiguous
我收到錯誤"Integrity constraint violation: 1052 Column 'restaurant_id' in where clause is ambiguous' in"
。
a)如何在JOIN上使用bindparam? 甚至是導致此錯誤的問題嗎?
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();
}
更改
...
WHERE restaurant_id = :restaurant_id
至
...
WHERE m.restaurant_id = :restaurant_id
^^
請使用m.restaurant_id
或s.restaurant_id
在根據您的表格狀況可以解決您的問題的地方。
在連接查詢中始終使用別名以避免沖突。 在這里restaurant_id
應該是m.restaurant_id
。
試試這個查詢:-
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
放在條件如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.