使用預處理語句和動態表名執行插入查詢
當您需要在多個具有相似列結構的表中插入資料時,使用預處理語句來有效率地執行批次查詢非常方便。然而,當目標表名需要動態變化時,任務會變得更加複雜。
如原始問題所述,一種方法是建立查詢字串,其中包含欄位值和表名的佔位符:
<code>String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";</code>
雖然這種方法允許動態插入欄位值,但在嘗試更改表名時卻存在不足。預處理語句的設計意圖是使用可變資料執行預定的查詢範本。它們不支援對查詢結構本身(包括表名)進行動態變更。
解決此問題的方案是使用字串連接或占位符結合String.format:
<code>String tableName = "tableName1"; String query = String.format("INSERT INTO %s (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);", tableName);</code>
透過將表名直接連接到查詢字串中,您可以為每個插入操作動態定義目標表。這種方法在所有情況下可能不如使用預處理語句那樣簡潔,但它提供了使用單一查詢範本向不同表插入資料的靈活性。
以上是如何使用Prepared語句將資料插入動態名稱的表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!