PDO LIMIT和OFFSET

pro*_*yb2 7 php pdo

可能重复:
LIMIT中的PHP PDO bindValue

在准备语句中使用LIMIT和/或OFFSET时我无法显示数据,但如果我不使用LIMIT和OFFSET,我可以显示"雷雷",代码看起来是错误的吗?

$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));
Run Code Online (Sandbox Code Playgroud)

这已经从原来的代码改变了:

$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());
Run Code Online (Sandbox Code Playgroud)

pro*_*yb2 20

我找到了答案!

$statement->bindValue(':sta1', (int) $start, PDO::PARAM_INT); 
Run Code Online (Sandbox Code Playgroud)

确实有效


You*_*nse 8

$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
Run Code Online (Sandbox Code Playgroud)

将让你绑定变量而不会被它们打扰


chr*_*iso 1

编辑:已修复

$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();
Run Code Online (Sandbox Code Playgroud)

  • 讨厌破坏线程...但是编辑后的版本将参数绑定到错误的名称...给定 SQL 语句“... LIMIT :limit OFFSET :offset”中的参数,您应该将 $start 绑定到 offset 和 $ per_page 限制 (3认同)