PDO上的语法错误或访问冲突

时间:2016-08-09 12:01:07

标签: php pdo

我需要对PDO有所帮助。我已经创建了一个小包装来扩展PDO功能,这个类非常简单,我希望将注意力集中在select方法上,这适用于简单查询,但如果我插入{{1}似乎JOIN将无法执行该语句。这是方法:

PDO

现在在构造函数中我将异常启用为:

public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
{
    $sth = $this->prepare($sql);
    foreach ($array as $key => $value) 
    {
        $sth->bindValue("$key", $value);
    }

    $sth->execute();
    return $sth->fetchAll($fetchMode);
}

我将此public function __construct($DB_TYPE, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS) { parent::__construct($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } 包装器保存在PDO属性中,因此我可以将db函数称为:select,检查感兴趣的查询:

$this->db

如何看到我正在尝试选择用户$userData = $this->db->select('SELECT id as user_id, email as user_email, role as role_slug FROM users INNER JOIN roles ON roles.id = users.role INNER JOIN user_settings ON user_settings.id_user = user.id WHERE company = :company, username = :username, password = :password', array(':company' => $company, ':username' => $username, ':password' => $password)); 上的id, email, role,我还需要在名为users的另一个表上获取该角色表roles上的用户设置。现在,user_settings位于名为username的表格上,用于完整的结构:

用户

user_settings

user_settings

id|id_company|first_name|last_name|email|mobile_phone

角色

id_user|username|password

我真的不知道这个错误意味着什么。谁知道我做错了什么?

谢谢,对不起任何错误,我是这个网站的新人。

1 个答案:

答案 0 :(得分:1)

WHERE company = :company, username = :username, password = :password

不正确,您无法使用,分隔条件,请使用ANDOR

WHERE company = :company AND username = :username AND password = :password