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

在尝试创建一个分页系统时遇到了错误。代码试图从数据库中按ID降序选取5篇文章,每页显示5篇。错误源于将OFFSET值0用引号包围导致的SQL语法错误。解决方案是将OFFSET值转换为整数并直接拼接到SQL语句中,避免使用引号。修复后的代码能够正确执行,实现分页功能。
摘要由CSDN通过智能技术生成

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值