Php “收到”;SQLSTATE[42000]:限制错误;通过PDO使用MySQL时

Php “收到”;SQLSTATE[42000]:限制错误;通过PDO使用MySQL时,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我花了相当多的时间研究,无法解决它。因此寻求专家建议 确切错误: 获取数据时出错:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“限制0,10”附近使用的正确语法 以下是我的SQL: $limit = 'LIMIT ' .($pn - 1) * $itemsPerPage .',' .$itemsPerPage; try { $sql2 = 'SELECT CASE_JOB_TITLE, STATUS,

我花了相当多的时间研究,无法解决它。因此寻求专家建议

确切错误:

获取数据时出错:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“限制0,10”附近使用的正确语法

以下是我的SQL:

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

try
{
  $sql2 = 'SELECT CASE_JOB_TITLE, STATUS, CASE_WAGE  
           FROM EMPLOYEE
           WHERE LCA_CASE_EMPLOYER_NAME like "%MICROSOFT CORPORATION%" 
           ORDER BY         LCA_CASE_NUMBER ASC :limit';

  $sth2 =$pdo->prepare($sql2);
  $sth2->bindParam(':limit',$limit );
  $result2 = $sth2->execute();


}

我哪里做错了?如果我在SQL编辑器中使用相同的查询,它可以正常工作

编辑:没有看到您的第一部分。试试这个:

它应该是这样的:

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

$sql2 = 'SELECT CASE_JOB_TITLE, STATUS, CASE_WAGE  
           FROM EMPLOYEE
           WHERE LCA_CASE_EMPLOYER_NAME like "%MICROSOFT CORPORATION%" 
           ORDER BY         LCA_CASE_NUMBER ASC LIMIT :limit';

编辑:没有看到你的第一部分。试试这个:

它应该是这样的:

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

$sql2 = 'SELECT CASE_JOB_TITLE, STATUS, CASE_WAGE  
           FROM EMPLOYEE
           WHERE LCA_CASE_EMPLOYER_NAME like "%MICROSOFT CORPORATION%" 
           ORDER BY         LCA_CASE_NUMBER ASC LIMIT :limit';

我用绳子解开了它。我使用的最后一组代码是按LCA_CASE_编号ASC LIMIT:limitFrom,40'$sth2=$pdo->prepare($sql2)$sth2->bindParam(':limitFrom–

我通过删除带有字符串的绑定来解决它。我使用的最后一组代码是ORDER by LCA_CASE_NUMBER ASC LIMIT:limitFrom,40';$sth2=$pdo->prepare($sql2);$sth2->bindParam(':limitFrom–

您确定可以使用绑定参数进行限制吗?从错误消息来看,它看起来像是用引号括起来的;因此我怀疑您不能这样做。可能是MySQL复活节彩蛋,它会抛出对“MICROSOFT CORPORATION”的任何搜索?(我认为@Andrew是对的,而且您不能插入“LIMIT 20”两者都有;它违背了参数化的目的)。我认为andrewsi和halfer是对的。我只尝试了数字,它很有效。它违背了绑定的目的,并准备避免SQL注入攻击。谢谢!你确定可以使用绑定参数进行限制吗?从错误消息来看,它看起来像是用引号括起来的;所以我怀疑你不能这样做。可能是MySQL eas它抛出了对“微软公司”的任何搜索(我认为@Andrew是对的,而且你也不能注入“限制20”;它违背了参数化的目的)。我认为andrewsi和halfer是对的。我只尝试了数字,它奏效了。它违背了绑定的目的,并准备避免SQL注入攻击。谢谢!运气不好,我尝试了上述方法,但仍然出错。我得到的错误是:错误获取数据:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第4行“0,10”附近使用的正确语法,以便进行答复。我通过删除带字符串的绑定来解决此问题。我使用的最后一组代码是ORDER by LCA_CASE_NUMBER ASC LIMIT:limitFrom,40';$sth2=$pdo->prepare($sql2);$sth2->bindParam(':limitfrom运气不好,我尝试了上面的方法,但仍然出错。我得到的错误是:获取数据时出错:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第4行“0,10”附近使用的正确语法,以便进行答复。我通过删除带字符串的绑定来解决此问题。我使用的最后一组代码是ORDER by LCA_CASE_NUMBER ASC LIMIT:limitFrom,40';$sth2=$pdo->prepare($sql2);$sth2->bindParam(':limitFrom)