PDO 中INSERT INTO 的準備語句錯誤
在處理PDO 的複雜性時,您可能會在使用MySQL 查詢的準備語句時遇到困難。考慮以下程式碼:
$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();
儘管採用了這種方法,您的資料庫仍然是空的。
解決方案在於適當使用已準備好的語句。相反,請使用以下內容:
$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', ]);
準備好的語句提供輸入清理。在 SQL 語句中使用「:parameter」佔位符,並在「execute」函數中傳遞這些參數的關聯數組。或者,使用“?”佔位符並傳遞值數組。
兩種方法各有優缺點。綁定參數名稱可以增強可讀性,而後者方法可以簡化程式碼。
以上是為什麼我的 PDO 準備語句無法插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!