我是靠谱客的博主 时尚黑猫,最近开发中收集的这篇文章主要介绍PHP PDO中不能使用limit,阿里云中limit的奇怪之处,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、PDO 中 limit

  • 项目用到简单分页,开始利用PDO做。如下代码$data为array(0) {},未报错。将SQL语句复制到窗口运行却能查到数据。

        $query = "SELECT * FROM order ORDER BY id LIMIT ?,?";
        $pdo = new PDO('mysql:host=host;dbname=db;port=3306;charset=utf8','user','pass');
        $statement = $pdo->prepare($query);
        $condition = [0,10];
        $statement ->execute($condition);
        $data = $statement ->fetchAll(2);
        var_dump($data);
  • 然后查网上说如下绑定数据方式可行。但是$data依旧为array(0) {}。
        $query = "SELECT * FROM order ORDER BY id LIMIT ?,?";
        $pdo = new PDO('mysql:host=host;dbname=db;port=3306;charset=utf8','user','pass');
        $statement = $pdo->prepare($query);
        $statement->bindValue(1, 0, PDO::PARAM_INT);
        $statement->bindValue(2, 10, PDO::PARAM_INT);
        $statement ->execute();
        $data = $statement ->fetchAll(2);
        var_dump($data);
  • 最终用拼接方式查询成功,拿到数据。字段user为字符串,变量$user前需拼接单引号,否则阿里云报错。

        $offset = 0;
        $size = 20;
        $user = 'username';
        $query = 'SELECT * FROM order WHERE `user` = '."'".$user."'".'ORDER BY id LIMIT'. $offset.','.$size;
        $pdo = new PDO('mysql:host=host;dbname=db;port=3306;charset=utf8','user','pass');
        $statement = $pdo->prepare($query);
        $statement->execute();
        $data = $statement->fetchAll(2);
        var_dump($data);
    

    2、阿里云limit的奇怪之处。

  • 在阿里云SQL窗口中运行 SELECT id FROM order LIMIT 0,10; 获取不到ID为7的数据
    这里写图片描述

  • 加上ORDER 排序后可获得ID为1-10的数据。

这里写图片描述

  • 使用*获取所有字段,不用OEDER排序,可获得ID为1-10条数据。具体原因,尚不清楚。
    这里写图片描述

最后

以上就是时尚黑猫为你收集整理的PHP PDO中不能使用limit,阿里云中limit的奇怪之处的全部内容,希望文章能够帮你解决PHP PDO中不能使用limit,阿里云中limit的奇怪之处所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部