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