PDO LIMIT bug

PDO存在一个LIMIT BUG(mysql)

需要指定数据类型,而且limit后面跟的2个参数必须是数值类型,不然的话获取不到数据

例1:

$dsn = "mysql:host=127.0.0.1;port=3306;dbname=dab";
$dbh = new PDO($dsn, ‘root‘, ‘‘);
$sql = "select * from dab_ntos_admin limit ?,?";
$sth = $dbh->prepare($sql);
$sth ->bindValue(1, +‘0‘, PDO::PARAM_INT); // 第三个参数指定了参数类型,第二个参数用+号做了类型转换(转成数值类型)
$sth ->bindValue(2, +‘1‘, PDO::PARAM_INT); // 第三个参数指定了参数类型,第二个参数用+号做了类型转换(转成数值类型)
$sth-> execute();
foreach($sth as $row) {
    echo var_dump($row);
} 

例2:

$dsn = "mysql:host=127.0.0.1;port=3306;dbname=dab";
$dbh = new PDO($dsn, ‘root‘, ‘‘);
$sql = "select * from dab_ntos_admin limit :start,:limit";
$sth = $dbh->prepare($sql);
$sth ->bindValue(‘:start‘, +‘0‘, PDO::PARAM_INT); // 第三个参数指定了参数类型,第二个参数用+号做了类型转换(转成数值类型)
$sth ->bindValue(‘:limit‘, +‘1‘, PDO::PARAM_INT); // 第三个参数指定了参数类型,第二个参数用+号做了类型转换(转成数值类型)
$sth-> execute();
foreach($sth as $row) {
    echo var_dump($row);
} 
时间: 2024-11-09 13:54:41

PDO LIMIT bug的相关文章

踩到两只“bug”

近期在修复ex和头儿的代码时,碰到两个特别点的bug,其实也不能称之为bug,非常简单的用法,稍不严谨点可能就出错了. 第一个是in_array,大家都知道功能是检查一个值是否在数组中,第三个参数传入true是严格模式检查,比较的时候要求类型一致,问题就在这个严格,比如现在有这么个判断: 可以猜猜是否有输出,结果让人大跌眼镜,竟然打印了.这个非严格模式很有点模糊,当然知道这里不会检查类型,比如官网或者手册上会举若干例子,最典型的就是,数组中有数字字符串,然后判断等值的整型数是否在数组中时,结果为

Redhat 5.1 install PHP 5.3.6  

Redhat 5.1 install PHP 5.3.6 现在各种版本的坑..导致没有低版本的php 可能是使用的问题导致.系统版本没有提升导致的没有包可用.... yum install gcc libxml2-devel bzip2-devel zlib-devel \ curl-devel libmcrypt-devel libjpeg-devel \ libpng-devel gd-devel mysql-devel  php-pecl-zip download 软件包 wget htt

PHP独立编译安装扩展(mysqli,pdo-mysql)

PHP编译安装扩展(mysqli,pdo-mysql) qunying.liu 201410.30 1.环境说明: 系统:CentOS 6.3 64位 Linux PHP版本:5.3.13 Mysql版本:5.5.26 PHP安装目录:/usr/local/php PHP配置文件:/usr/local/php/etc/php.ini PHP扩展目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20090624/ MySQL安装目录:/us

ORA-00600: internal error code, arguments: [kkqtSetOp.1]

新数据库从32升级到64位的11G 11 2 0 3 有条SQL 语句运行的时候会导致内部错误. 使用PL/SQL DEVELOPER 查询该语句的运行机会 按F5键 就激发了这个ORA600 单击此项可加入到收藏夹 Query fails with ORA-00600: internal error code, arguments: [kkqtSetOp.1] (文档 ID 1494113.1) _afrLoop=1485991559877205&id=1494113.1&display

php添加pdo_mysql.so的扩展

1. 首先进入你下载的php的安装包里找到pdo_mysql文件夹. /usr/local/php-7.3.3/ext/pdo_mysql ps:有些教程说从http://pecl.php.net/这个网站上下载pdo_mysql扩展,然后再编译安装.唉,兄弟啊,这个东西社区都不维护了,你还从上面下载个球球啊!!!! 大家一定要避免这个坑啊!!!!! 2. 执行phpize. 这里要注意,你要使用自己要添加扩展的php的phpize.什么意思呢?比如说你有php7 和 php7.3两个php版本

解决Bug:Size of a request header field exceeds server limit

用了cms 发现这玩意真不好,老是有各种奇芭的问题跳出来 有时浏览网页时会出现 Bad Request Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit. 意思为:错误的请求.您的浏览器发送一个请求,该服务器无法理解.一个请求头域的大小超过服务器的限制. 以下是解决方法,不过,我个人感觉,不可能无限制的增大请求

impala jdbc4的group by语句的bug,加上limit没错

这里用的ImpalaJDBC4.jar SELECT field1 alias1 FROM table1 where field1 ='xxxx' group by alias1 这句话impala会报错,说找不到alias1,但是如果改成group by field1,就不会报错了. 更神奇的是,如果在语句的最后加上limit,也没有错: SELECT field1 alias1 FROM table1 where field1 ='xxxx' group by alias1 limit 10

MYSQL limit 和 order by 的数据不可靠的bug

今天遇到一种情况,记下来: select * from table where a=xxx and b=xxx order by c limit 8,2; select * from table where a=xxx and b=xxx order by c limit 10,2 按理来说这两个语句是应该返回完全不同的结果 可是在我的程序里返回的有一行是相同的 比如第一句结果是: 张三 李四 第二句结果是: 王五 李四 这是完全不能接受的,也不应该出现的 究其原因是因为order by 不可靠

POJ 2492 A Bug's Life

A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 35756   Accepted: 11730 Description Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different gender