首頁 >資料庫 >mysql教程 >為什麼我的 PDO 準備語句無法將資料插入 MySQL?

為什麼我的 PDO 準備語句無法將資料插入 MySQL?

Barbara Streisand
Barbara Streisand原創
2025-01-13 06:14:42118瀏覽

Why Are My PDO Prepared Statements Failing to Insert Data into MySQL?

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

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