首頁 >資料庫 >mysql教程 >為什麼我的 PDO INSERT INTO 準備好的語句不起作用?

為什麼我的 PDO INSERT INTO 準備好的語句不起作用?

Linda Hamilton
Linda Hamilton原創
2025-01-13 07:14:42521瀏覽

Why Doesn't My PDO INSERT INTO Prepared Statement Work?

將 PDO 準備好的語句與 MySQL INSERT INTO 查詢結合使用

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 使用佔位符,而不是直接嵌入值:

  1. 命名參數: 在 SQL 中使用 :name 等佔位符,並將關聯數組中的值提供給 execute()
  2. 位置參數: 使用 ? 作為佔位符,並將數字索引數組中的值提供給 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中文網其他相關文章!

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