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