簡體   English   中英

INNER JOIN:where子句太含糊

[英]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_ids.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM