PHP 資料物件 (PDO) 為安全的 MySQL 互動提供準備好的語句,但建構 INSERT INTO
查詢可能具有挑戰性。 讓我們解決一個常見問題及其解決方案。
考慮這段程式碼:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
這個看似正確的程式碼通常無法填入資料庫。 為什麼?
關鍵是參數綁定。 這可以防止 SQL 注入漏洞並提高程式碼的可維護性。 PDO 使用佔位符,而不是直接嵌入值:
:name
等佔位符,並將關聯數組中的值提供給 execute()
。 ?
作為佔位符,並將數字索引數組中的值提供給 execute()
。 這是使用命名參數的修正程式碼:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (:name, :lastname, :age)"); $statement->execute([ 'name' => 'Bob', 'lastname' => 'Desaunois', 'age' => '18', ]);</code>
這是使用位置參數的等效方法:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (?, ?, ?)"); $statement->execute(['Bob', 'Desaunois', '18']);</code>
參數綁定增強了資料庫安全性,並使您的程式碼更有效率和可讀性。 這對於 PDO 的穩健使用至關重要。 掌握這項技術對於安全有效的 PHP 資料庫程式設計至關重要。
以上是為什麼我的 PDO INSERT INTO 準備好的語句不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!