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+谢谢你。我想知道为什么我的极限:计数不起作用。它看起来像是一根弦。