Php 多个内部联接中断了查询

Php 多个内部联接中断了查询,php,Php,我试图连接多个表,让我用我的查询代码示例更好地解释: 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

我试图连接多个表,让我用我的查询代码示例更好地解释:

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;
现在,查询返回的错误如下:

字符串(226)“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行的“表上的内部联接表\u角色。id=表\u用户。id\u角色内部联接表”附近使用的正确语法”


问题出在哪里

查询中存在语法错误:
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 = ? "))

查询中有3个
WHERE
子句,其中只有1个是有效的,它应该在
FROM
内部联接
子句之后。
WHERE
子句中的所有条件都应该用
子句(在此查询中)分隔


您可能想在MySql文档中检查有效的SQL语法:

现在错误就在附近:`` WHERE primo_user_settings.username=?WHERE primo_user_settings.password=?`好的,所以我不能在连接之前放一个WHERE?不,首先选择,然后选择FROM和JOINs,然后我在其中添加了一个指向MySql中SQL查询的MySql文档的链接
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 = ? "))