Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO限制和偏移_Php_Pdo - Fatal编程技术网

Php PDO限制和偏移

Php PDO限制和偏移,php,pdo,Php,Pdo,可能重复: 在prepare语句中使用LIMIT和/或OFFSET时,我无法显示数据,但如果我不使用LIMIT和OFFSET,我可以显示“Lei Lei”,代码看起来是否错误 $statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :sta OFFSET :ppage"); $name = "Lei Lei"; $statement->execute(arra

可能重复:

在prepare语句中使用LIMIT和/或OFFSET时,我无法显示数据,但如果我不使用LIMIT和OFFSET,我可以显示“Lei Lei”,代码看起来是否错误

$statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :sta OFFSET :ppage");
$name = "Lei Lei";
$statement->execute(array(':name' => $name,':sta' => $start,':ppage' => $per_page));
这与原来的代码有所不同:

$query_pag_data = "SELECT id,username from public2 LIMIT $start, $per_page";
$result_pag_data = mysql_query($query_pag_data) or die('MySql Error' . mysql_error());
编辑:固定

$statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :limit OFFSET :offset");
$name = "Lei Lei";
$statement->bindValue(':name', $name);
$statement->bindValue(':limit', (int) $start, PDO::PARAM_INT);
$statement->bindValue(':offset', (int) $per_page, PDO::PARAM_INT);
$statement->execute();
我找到了答案

$statement->bindValue(':sta1', (int) $start, PDO::PARAM_INT); 
行得通

$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );

将允许您绑定变量,而不必担心它们的类型

任何原因您正在运行
$statement->execute()
两次?您是在执行后使用
$statement->fetch()
还是
$statement->fetchAll()
来检索结果?更新我的帖子,我正在使用$statement->fetch()@proyb2尝试不使用原始查询中的偏移量:
选择id,public2中的用户名=:name LIMIT$start,$per_page
我明白了,那么,我如何才能将限额添加到prepare语句中呢?我找到了答案$语句->bindValue(':sta1',(int)$start,PDO::PARAM_int);你错了吗。这样做违背了预先准备好的语句的想法,因为它需要一个线程。。。但编辑后的版本将参数绑定到错误的名称。。。给定SQL语句“…LIMIT:LIMIT OFFSET:OFFSET”中的参数,您应该将$start绑定到OFFSET,将$per_page绑定到LIMIT,为什么在调用成功后添加PDO::PARAM_INT时还要这样做?@Stephen因为这使得添加PDO::PARAM_INT变得不必要,愚蠢:)这也允许您使用普通数组绑定,而不是执行$statement->bindValue+谢谢你。我想知道为什么我的极限:计数不起作用。它看起来像是一根弦。