LIMIT 關鍵字如何與MySQL 中的預定義語句配合使用
MySQL 中的LIMIT 關鍵字用於限制SELECT 傳回的行數陳述。它需要兩個整數參數:偏移量和限制。
在以下範例中,LIMIT 子句用於從評論表中選擇前 10 行,按日期列降序排列:
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ?, ?
要使用 PDO準備好的語句執行此查詢,您可以將三個查詢參數綁定到適當的資料types:
$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 子句失敗。
要解決此問題,您可以停用模擬準備或使用位置佔位符來取代查詢中的命名佔位符。
停用模擬準備:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
使用位置佔位符:
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ? OFFSET ?
$query = $db->prepare($sql); $query->execute([$post, $min, $max]);
以上是MySQL 的 LIMIT 關鍵字如何與預先準備語句和參數綁定搭配使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!