Php “收到”;SQLSTATE[42000]:限制错误;通过PDO使用MySQL时
我花了相当多的时间研究,无法解决它。因此寻求专家建议 确切错误: 获取数据时出错:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“限制0,10”附近使用的正确语法 以下是我的SQL: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,
$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)