簡體   English   中英

多個INNER JOIN打破了查詢

[英]Multiple INNER JOIN broke the query

我正在嘗試連接多個表,讓我用我的查詢代碼示例更好地解釋一下:

if($stmt = $this->db->prepare("SELECT table_users.id AS user_id, table_users.email AS user_email, table_users.GUID as user_guid, "
        . "table_roles.slug AS role_slug, table_user_settings.username, table_users.id_roles, "
        . "table_users.first_name, table_users.last_name, table_users.mobile_number, table_users.phone_number, "
        . "table_users.address, table_users.city, table_users.state, table_users.zip_code, table_users.notes "
        . "FROM table_users "
        . "WHERE table_users.data = 0 "
        . "INNER JOIN table_roles ON table_roles.id = table_users.id_roles "
        . "INNER JOIN table_user_settings ON table_user_settings.GUID = table_user.GUID "
        . "WHERE table_user_settings.username = ? "
        . "WHERE table_user_settings.password = ? "))
    {
        $stmt->bind_param("ss",$username, $password);
        $stmt->bind_result($id, $email, $GUID, $slug, $id_roles, $address, $city, $state, $zip_code, $notes);
        $result = $stmt->execute();
        $stmt->fetch();
    }

    var_dump($this->db->error);

    $stmt->close();
    return $result;

現在查詢返回的錯誤是這樣的:

string(226)“您的SQL語法有誤;請在第1行的'INNER JOIN table_roles ON table_roles.id = table_users.id_roles INNER JOIN表'附近,查看與MySQL服務器版本相對應的手冊以使用正確的語法。 “

查詢中有什么問題?

您的查詢中有3個WHERE子句,當只有1個有效時,它應該放在FROMINNER JOIN子句之后。 WHERE子句中的所有條件都應使用AND子句分隔(在此查詢中)。

if($stmt = $this->db->prepare("SELECT table_users.id AS user_id, table_users.email AS user_email, table_users.GUID as user_guid, "
    . "table_roles.slug AS role_slug, table_user_settings.username, table_users.id_roles, "
    . "table_users.first_name, table_users.last_name, table_users.mobile_number, table_users.phone_number, "
    . "table_users.address, table_users.city, table_users.state, table_users.zip_code, table_users.notes "
    . "FROM table_users "
    . "INNER JOIN table_roles ON table_roles.id = table_users.id_roles "
    . "INNER JOIN table_user_settings ON table_user_settings.GUID = table_user.GUID "
    . "WHERE table_users.data = 0 AND "
    . "table_user_settings.username = ? AND "
    . "table_user_settings.password = ? "))

您可能想在MySql doc中檢出有效的SQL語法: http : //dev.mysql.com/doc/refman/5.7/en/select.html

您的查詢中存在語法錯誤: WHERE table_users.data = 0該錯誤應在JOIN之后出現

if($stmt = $this->db->prepare("SELECT table_users.id AS user_id, table_users.email AS user_email, table_users.GUID as user_guid, "
        . "table_roles.slug AS role_slug, table_user_settings.username, table_users.id_roles, "
        . "table_users.first_name, table_users.last_name, table_users.mobile_number, table_users.phone_number, "
        . "table_users.address, table_users.city, table_users.state, table_users.zip_code, table_users.notes "
        . "FROM table_users "
        . "INNER JOIN table_roles ON table_roles.id = table_users.id_roles "
        . "INNER JOIN table_user_settings ON table_user_settings.GUID = table_user.GUID "
        . "WHERE table_users.data = 0 AND "
        . "WHERE table_user_settings.username = ? AND "
        . "WHERE table_user_settings.password = ? "))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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