將準備好的語句與INSERT INTO 合併
在遍歷PHP 的迷宮深度:資料物件時,在嘗試執行MySQL 時出現了一個令人困惑的難題使用準備好的語句進行查詢,特別是用於INSERT INTO 操作。考慮以下程式碼片段:
$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();
儘管遵循了所謂的規定方法,但資料庫仍然頑固地保持著荒涼。讓我們來探索阻礙我們進步的缺失元素。
釋放 INSERT INTO 查詢準備語句潛力的關鍵在於參數綁定,這是一種允許將值安全且動態地整合到查詢中的技術。 SQL 語句。這是透過將佔位符合併到查詢中並隨後在執行期間以關聯數組的形式提供相應的值來實現的。
觀察修改後的程式碼:
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);
請注意查詢中參數名稱「:fname」、「:sname」和「:age」的存在。這些用作實際值的佔位符,然後在execute() 函數中作為關聯數組提供。
或者,您可以使用「?」語法作為佔位符並傳遞值數組而不指定參數名稱:
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);
兩種方法都有各自的優點和缺點。使用命名參數可以增強可讀性,而「?」語法簡化了綁定值的過程。然而,最終兩者之間的選擇取決於個人喜好。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3