首頁 >後端開發 >php教程 >如何使用 PHP 中的 MySQLi 擴充功能安全地更新 MySQL 資料庫?

如何使用 PHP 中的 MySQLi 擴充功能安全地更新 MySQL 資料庫?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-15 01:04:18213瀏覽

How to Securely Update a MySQL Database Using the MySQLi Extension in PHP?

完美的 MySQL 擴充程式碼範例

本題的目標是使用 MySQL 擴充功能提供簡潔且安全的 PHP 程式碼範例。程式碼應避免與 mysql_* 函數相關的常見錯誤,包括:

  • SQL 注入
  • 損壞的錯誤報告
  • 跨站點腳本 (XSS) 注入

程式碼範例:

<?php

header('Content-type: text/html; charset=utf-8');
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

$config = [
    'host' => '127.0.0.1',
    'user' => 'my_user',
    'pass' => 'my_pass',
    'db' => 'my_database'
];

$connection = @mysql_connect($config['host'], $config['user'], $config['pass']);

if (!$connection) {
    trigger_error('Unable to connect to database: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_select_db($config['db'])) {
    trigger_error('Unable to select db: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_set_charset('utf8')) {
    trigger_error('Unable to set charset for db connection: ' . mysql_error(), E_USER_ERROR);
}

$result = mysql_query(
    'UPDATE tablename SET name = "' . mysql_real_escape_string($_POST['name']) . '" WHERE id = "' . mysql_real_escape_string($_POST['id']) . '"'
);

if ($result) {
    echo htmlentities($_POST['name'], ENT_COMPAT, 'utf-8') . ' updated.';
} else {
    trigger_error('Unable to update db: ' . mysql_error(), E_USER_ERROR);
}
?>

說明:

  • 說明:
  • 說明:
  • mysql_set_charset()函數用於設定連接到 UTF-8 的字元集。
使用佔位符和 mysql_real_escape_string() 函數建立 SQL 更新查詢,以防止 SQL 注入。

檢查查詢結果,並顯示訊息「$name 已更新。」如果更新成功則顯示。否則,會觸發錯誤。 啟用錯誤報告是為了在開發過程中更好地進行偵錯。在生產模式下,可以停用此設定以禁止向最終用戶發送 PHP 錯誤訊息。 請注意,此程式碼範例僅供參考,不應被視為適用於所有 PHP 應用程式的完整解決方案。建議對現代 MySQL 應用程式使用 PDO 擴展,因為它提供增強的安全性和效能。

以上是如何使用 PHP 中的 MySQLi 擴充功能安全地更新 MySQL 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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