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
);
}

