首页 > 后端开发 > php教程 > 如何使用 PHP 中的 MySQLi 扩展安全地更新 MySQL 数据库?

如何使用 PHP 中的 MySQLi 扩展安全地更新 MySQL 数据库?

Mary-Kate Olsen
发布: 2024-12-15 01:04:18
原创
210 人浏览过

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_connect() 连接到 MySQL 数据库,并指定与 mysql_select_db 一起使用的数据库().
  • mysql_set_charset()函数用于设置连接到 UTF-8 的字符集。
  • 使用占位符和 mysql_real_escape_string() 函数构建 SQL 更新查询,以防止 SQL 注入。
  • 检查查询结果,并显示消息“$name 已更新。”如果更新成功则显示。否则,会触发错误。
  • 启用错误报告是为了在开发过程中更好地进行调试。在生产模式下,可以禁用此设置以禁止向最终用户发送 PHP 错误消息。

请注意,此代码示例仅供参考,不应被视为适用于所有 PHP 应用程序的完整解决方案。建议对现代 MySQL 应用程序使用 PDO 扩展,因为它提供增强的安全性和性能。

以上是如何使用 PHP 中的 MySQLi 扩展安全地更新 MySQL 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板