在執行需要變數表名的MySQL 查詢時,使用者可能會遇到諸如問題中報告的錯誤。本文旨在探討準備好的語句的用法,並提供此特定問題的解決方案。
提到的錯誤,「[Err] 1064 - You have an error in your SQL語法」表示MySQL伺服器無法正確解釋查詢語法。直接在查詢語句中使用變數「@table」可能是罪魁禍首。
準備好的語句提供了一個可靠的方法來處理涉及變數表名稱的動態查詢。它們允許您定義查詢模板並稍後動態替換值。在這種情況下,我們可以使用 CONCAT 函數定義一個查詢範本來建立變數表名稱。
考慮以下步驟:
SET @id := '47'; SET @table := CONCAT(@id, '_2013_2014_voucher'); SET @qry1 := CONCAT('SELECT * FROM ', @table);
這會在變數@qry1。
接下來,使用PREPARE指令準備語句:
PREPARE stmt FROM @qry1;
現在,您可以多次執行準備好的語句,根據需要替換不同的表名:
EXECUTE stmt;
相同的方法可以套用於刪除查詢。只需使用CONCAT 建立一個動態查詢範本並按照如上所示進行準備:
SET @qry2 := CONCAT('DELETE FROM ', @table, ' WHERE id = @id');
在MySQL 中使用具有動態表名的預先準備語句可以讓您高效地執行帶有可變表名的查詢和優雅。請記住使用 CONCAT 函數進行字串連接,並利用準備好的語句的強大功能來增強查詢靈活性和效能。
以上是如何在MySQL中使用變數表名建構動態查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!