對 MySQL 中的 PDO 準備語句插入進行故障排除
將 PHP 的 PDO 與 MySQL 準備好的語句結合使用可提供安全性和效率,但可能會出現插入問題。本指南解決了一個常見問題:儘管程式碼看似正確,但插入失敗。
問題:INSERT
嘗試後資料庫為空
讓我們檢查一個場景,其中 INSERT
使用準備好的語句不會填入資料庫:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
此程式碼看似有效,但 testtable
仍然為空。
解:參數綁定
解涉及正確綁定參數。 PDO 準備好的語句需要 SQL 查詢中的佔位符 - 命名參數 (:param
) 或問號 (?
)。 然後,在 execute()
方法期間用值填入這些佔位符。
以下是使用這兩種方法修復程式碼的方法:
<code class="language-php">// Using Named Parameters $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute(['fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18']); // Using Question Mark Placeholders $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);</code>
透過利用參數綁定,您可以確保安全插入數據,降低 SQL 注入風險並保持資料完整性。 這些值在執行期間被正確替換到查詢中。
以上是為什麼我的 PDO 準備語句無法將資料插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!