首頁 > 資料庫 > mysql教程 > 準備好的語句如何增強 PHP UPDATE 查詢的安全性和效能?

準備好的語句如何增強 PHP UPDATE 查詢的安全性和效能?

Mary-Kate Olsen
發布: 2024-10-29 16:29:02
原創
900 人瀏覽過

How can prepared statements enhance security and performance in PHP UPDATE queries?

為更新查詢所準備的語句

在 PHP 中,準備語句對於增強查詢安全性和效能至關重要。準備好的語句允許參數化查詢,其中使用佔位符 (?) 而不是直接變數插入。

UPDATE 查詢範例

考慮以下更新資料的mysqli 查詢在Applicant 表中:

$db_usag->query("UPDATE Applicant SET phone_number ='$phone_number', 
street_name='$street_name', city='$city', county='$county', zip_code='$zip_code', day_date='$day_date', month_date='$month_date',
 year_date='$year_date' WHERE account_id='$account_id'");
登入後複製

要準備此語句,請將所有語句,請將所有語句變數賦值替換為佔位符:

<code class="php">$sql = "UPDATE Applicant SET phone_number=?, street_name=?, city=?, county=?, 
zip_code=?, day_date=?, month_date=?, year_date=? WHERE account_id=?";</code>
登入後複製

接下來,初始化準備好的語句物件:

<code class="php">$stmt = $db_usag->prepare($sql);</code>
登入後複製

使用bind_param()方法將參數綁定到語句。對應指定參數的資料型態:

<code class="php">// Assuming the date and account_id parameters are integers `d` and the rest are strings `s`
$stmt->bind_param('sssssdddd', $phone_number, $street_name, $city, $county, 
$zip_code, $day_date, $month_date, $year_date, $account_id);</code>
登入後複製

執行準備好的語句:

<code class="php">$stmt->execute();</code>
登入後複製

檢查是否有錯誤:

<code class="php">if ($stmt->error) {
    echo "FAILURE!!! " . $stmt->error;
}</code>
登入後複製

如果執行是成功,檢索受影響的行數:

<code class="php">echo "Updated {$stmt->affected_rows} rows";</code>
登入後複製

最後,關閉statement物件:

<code class="php">$stmt->close();</code>
登入後複製

透過使用prepared statements,可以避免潛在的注入攻擊,並提高效率您的資料庫查詢。

以上是準備好的語句如何增強 PHP UPDATE 查詢的安全性和效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板