使用 MySQL 扩展进行安全 MySQL 查询
简介
尽管 PDO 很流行, mysql_* 系列函数仍然是 PHP 数据库交互的常见选择。虽然这个库在正确使用时是完全安全的,但它的使用经常会导致安全和技术问题。本文提供了一个完美的代码示例,展示了如何安全地使用 MySQL 扩展。
避免常见陷阱
mysql_* 函数因几个常见问题而臭名昭著,包括:
示例代码
以下代码示例实现了一个简单的 PHP 脚本,该脚本更新基于 POST 变量的数据库表行,同时缓解上述问题风险:
<?php header('Content-type: text/html; charset=utf-8'); error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); $config = array( '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_* 系列函数进行安全 MySQL 查询提供了坚实的基础。它通过实施正确的错误处理、防止 SQL 注入和支持 Unicode 来解决常见的陷阱。通过采用这些实践,开发人员可以编写安全可靠的数据库驱动的应用程序。
以上是如何在 PHP 中安全地使用 MySQL 扩展以避免 SQL 注入和其他陷阱?的详细内容。更多信息请关注PHP中文网其他相关文章!