php查询结果分页错误,php – 分页和错误

我正在尝试编写一个小的分页系统,但就事情而言,我收到了一个错误.这是我的代码:

else{

include('head.php');

if(empty($_GET['pg'])){ $_GET['pg'] = 0 ;}

$offset = $_GET['pg'] * 5;

$query = $db->prepare('SELECT * FROM posts ORDER BY id DESC LIMIT 5 OFFSET :n');

$query->bindParam(':n', $offset);

$query->execute();

?>

while ($data = $query->fetch()){

echo ''.$data['content'].'';

}}?>

所以我只想逐页显示5篇文章.也就是说,我想要索引页面上的最后5篇文章(即第0页),然后是第1页上的接下来的5篇文章等等.到目前为止,我得到的只是这个错误:

Fatal error: Uncaught exception ‘PDOException’ with message ‘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 ”0” at line 1’ in /Applications/MAMP/htdocs/index.php:24 Stack trace: #0 /Applications/MAMP/htdocs/index.php(24): PDOStatement->execute() #1 {main} thrown in /Applications/MAMP/htdocs/index.php on line 24

第24行是$query-> execute();指令.

所以我想我的问题是:发生了什么事?我的传呼系统是否按照我想要的方式工作?

解决方法:

您收到此错误是因为生成的sql在0周围有引号字符.

‘SELECT * FROM posts ORDER BY id DESC LIMIT 5 OFFSET:n’

正在变成

‘SELECT * FROM posts ORDER BY id DESC LIMIT 5 OFFSET“0”’

当你需要的SQL是

‘SELECT * FROM posts ORDER BY id DESC LIMIT 5 OFFSET 0’ – 0周围没有引号

试试这个

$offset = (int) ($_GET['pg'] * 5 ); // cast to an int so that you know its not a non-int value, then you don't need the protection of bind

$sql = 'SELECT * FROM posts ORDER BY id DESC LIMIT 5 OFFSET ' . $offset;

$query = $db->prepare($sql);

$query->execute();

标签:php,mysql

来源: https://codeday.me/bug/20190708/1400011.html

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值