SQL:语法错误或访问冲突

时间:2015-01-23 21:31:53

标签: php mysql exception pdo

在开始之前,我查看了许多其他帖子,但没有一个确实有帮助。

我得到了一个" SQLSTATE [42000]:语法错误或访问冲突"错误。此错误是由此行引起的:

$sql2 = $database->query("SELECT * FROM `users` LIMIT $limit");

$ limit是:

$limit = ($page_id-1)*$itemsPerPage.','.$itemsPerPage;

我的完整错误:

  

致命错误:未捕获的异常' PDOException' with message' SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在' -10,10'附近使用正确的语法。在第1行'在C:\ xampp \ htdocs \ pdo \ index.php:76堆栈跟踪:#0 C:\ xampp \ htdocs \ pdo \ index.php(76):PDO->查询(' SELECT * FROM` ......')在第76行的C:\ xampp \ htdocs \ pdo \ index.php中抛出#1 {main}

我花了很长时间试图解决这个问题。我尝试过没有$ limit的查询。但这不起作用。

以下是我如何进行for循环:

$limit = ($page_id-1)*$itemsPerPage.','.$itemsPerPage;
$sql2 = $database->query("SELECT * FROM `users` LIMIT $limit");

while($row = $sql2->fetch(PDO::FETCH_OBJ)) {
    //My stuff in here
}

如果有人可以提供任何帮助,那就太棒了。谢谢!

2 个答案:

答案 0 :(得分:0)

LIMIT参数的计算是不明确的。

在这一行:

$limit = ($page_id-1)*$itemsPerPage.','.$itemsPerPage;

如果$page_id未定义或为零,则您的第一个词变为负数,并导致限制子句LIMIT -10,10,这是导致语法错误的原因。

确保$page_id具有您认为的值。

答案 1 :(得分:0)

您需要使用1初始化$page_id,我认为第一次没有定义:

if (!isset($page_id)) $page_id = 1;
$limit = ($page_id-1)*$itemsPerPage.','.$itemsPerPage;
$sql2 = $database->query("SELECT * FROM `users` LIMIT $limit");