我使用此查询来获取行范围,例如 0-5 ,但我收到一条错误消息。
这是代码:
if(isset($_GET['page']) && isset($_GET['per'])){
$per = $_GET['per'];
$pageNumber = $_GET['page'];
$from = ($pageNumber * $per) - $per;
$results = $pdo->prepare('SELECT * FROM users LIMIT :sfrom , :sto');
$results->execute(array('sfrom' => $from , 'sto' => $per));
}
我收到以下错误:
fatal error :未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 ''5' 、 '5'' 附近使用的正确语法
我认为这是因为$from
和$per
作为字符串插入或我尝试使用 (int)$from
将它们转换为 int , (int)$per
但仍然有同样的错误
最佳答案
传递的值必须是整数,但对它们进行强制转换还不够。
使用PDOStatement::
指示PDO绑定(bind)参数的类型为整数bindParam
然后调用 PDOStatement::
execute
作为最后一步(不带参数)。
$results = $pdo->prepare('SELECT * FROM users LIMIT :sfrom , :sto');
$results->bindParam(':sfrom', (int)$from, PDO::PARAM_INT );
$results->bindParam(':sto', (int)$to, PDO::PARAM_INT );
$results->execute();
关于php - SQL 查询出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089492/