使用具有PDO 的預準備語句執行MySQL INSERT 查詢
在PHP 資料物件(PDO) 領域,嘗試執行MySQL INSERT 的MySQL INSERT時可能會遇到困難透過準備好的語句執行SQL 查詢。一個常見問題涉及使用 INSERT INTO 語句向資料庫新增記錄。
考慮以下程式碼:
$dbhost = "localhost"; $dbname = "pdo"; $dbusername = "root"; $dbpassword = "845625"; $link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword"); $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();
此程式碼嘗試將新記錄插入到 testtable 表中MySQL 資料庫。但是,資料庫仍然是空的。
要解決此問題,您需要使用參數化查詢,而不是直接將值嵌入到 SQL 語句中。參數化查詢使用佔位符 (?) 或命名參數 (:parameter) 來表示值,然後在執行期間將其綁定到實際值。這種方法可以防止 SQL 注入攻擊並確保資料驗證。
使用INSERT INTO 準備好的語句的正確方法如下:
$dbhost = 'localhost'; $dbname = 'pdo'; $dbusername = 'root'; $dbpassword = '845625'; $link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword); $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);
透過使用參數化查詢,您可以保護您的應用程式免受惡意輸入並確保您的資料完整性。
以上是如何正確使用帶有 PDO 的預準備語句進行 MySQL INSERT 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!