LIMIT 關鍵字如何與MySQL 中的預定義語句配合使用
MySQL 中的LIMIT 關鍵字用於限制SELECT 傳回的行數陳述。它需要兩個整數參數:偏移量和限制。
在以下範例中,LIMIT 子句用於從評論表中選擇前 10 行,按日期列降序排列:
1 2 3 4 5 | SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ?, ?
|
登入後複製
要使用 PDO準備好的語句執行此查詢,您可以將三個查詢參數綁定到適當的資料types:
1 2 3 4 5 | $query = $db ->prepare( $sql );
$query ->bindParam(1, $post , PDO::PARAM_STR);
$query ->bindParam(2, $min , PDO::PARAM_INT);
$query ->bindParam(3, $max , PDO::PARAM_INT);
$query ->execute();
|
登入後複製
但是,如果您嘗試在啟用模擬準備(MySQL PDO 驅動程式的預設)的情況下執行此查詢,您將遇到錯誤。這是因為 MySQL 驅動程式會自動將第二個和第三個查詢參數轉換為字串,這將導致 LIMIT 子句失敗。
要解決此問題,您可以停用模擬準備或使用位置佔位符來取代查詢中的命名佔位符。
停用模擬準備:
1 | $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
|
登入後複製
使用位置佔位符:
1 2 3 4 5 | SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ? OFFSET ?
|
登入後複製
1 2 | $query = $db ->prepare( $sql );
$query ->execute([ $post , $min , $max ]);
|
登入後複製
以上是MySQL 的 LIMIT 關鍵字如何與預先準備語句和參數綁定搭配使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!