语法错误或访问冲突:1064不明白?

时间:2014-04-20 09:16:17

标签: php mysql

我在浏览器中收到的文字:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users' WHERE 'username'= 'cAASDASD'' at line 1

也许是这部分? 否则我没有'在哪里'。

public function user_exists($username) {

    $query = $this->db->prepare("SELECT COUNT('id') FROM 'users' WHERE 'username'= ?");
    $query->bindValue(1, $username);

    try {
        $query->execute();
        $rows = $query->fetchColumn();

        if($rows == 1) {
            return true;
        }
        else {
            return false;
        }
    }
    catch (PDOException $e) {
        die($e->getMessage());
    }
}

2 个答案:

答案 0 :(得分:1)

在您运行的真实代码中,'single quotes'在表名周围使用,而不是像在此处发布的一个反引号

由于wrong way of using exceptions,你不知道这个错误发生在哪里。因此,只要您删除无用的try-catch,就会立即通知您发生错误的确切位置

答案 1 :(得分:0)

错误与您正在显示的PHP代码片段无关。根据错误消息,您似乎正在使用以下内容:

$query  = $this->db->prepare("SELECT * FROM 'users' WHERE 'username' = ?");

这里,表和列都使用单引号而不是后标记。你想要的是:

$query  = $this->db->prepare("SELECT * FROM `users` WHERE `username` = ?");