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

} 

 

你可能感兴趣的:(limit)