首頁 >資料庫 >mysql教程 >MySQL 的 LIMIT 關鍵字如何與預先準備語句和參數綁定搭配使用?

MySQL 的 LIMIT 關鍵字如何與預先準備語句和參數綁定搭配使用?

Linda Hamilton
Linda Hamilton原創
2024-12-06 18:51:13487瀏覽

How Does MySQL's LIMIT Keyword Work with Prepared Statements and Parameter Binding?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn