php mysql_real_escape_string函数用法与实例教程

2015-01-24信息快讯网

mysql_real_escape_string() 函数用来转义SQL语句中使用的字符串中的特殊字符

转义特殊字符在unescaped_string,考虑到当前字符的连接设置,以便它在的地方是安全的在mysql_query()它。如果二进制数据要插入,这个函数必须被使用

下列字符受影响:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

语法

mysql_real_escape_string(string,connection)
参数描述
string必需。规定要转义的字符串。
connection可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

说明

本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。

提示和注释

提示:可使用本函数来预防数据库攻击。

例子

例子 1

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// 获得用户名和密码的代码

// 转义用户名和密码,以便在 SQL 中使用 $user = mysql_real_escape_string($user); $pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM users WHERE user='" . $user . "' AND password='" . $pwd . "'"

// 更多代码

mysql_close($con); ?>

例子 2
数据库攻击。本例演示如果我们不对用户名和密码应用 mysql_real_escape_string() 函数会发生什么:

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$sql = "SELECT * FROM users WHERE user='{$_POST['user']}' AND password='{$_POST['pwd']}'"; mysql_query($sql);

// 不检查用户名和密码 // 可以是用户输入的任何内容,比如: $_POST['user'] = 'john'; $_POST['pwd'] = "' OR ''='";

// 一些代码...

mysql_close($con); ?>

那么 SQL 查询会成为这样:

SELECT * FROM users
WHERE user='john' AND password='' OR ''=''这意味着任何用户无需输入合法的密码即可登陆。

例子 3
预防数据库攻击的正确做法:

<?php
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
  {
  $value = stripslashes($value);
  }
// 如果不是数字则加引号
if (!is_numeric($value))
  {
  $value = "'" . mysql_real_escape_string($value) . "'";
  }
return $value;
}

$con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); }

// 进行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = "SELECT * FROM users WHERE user=$user AND password=$pwd";

mysql_query($sql);

mysql_close($con); ?>

PHP+Mysql+Ajax+JS实现省市区三级联动
PHP函数strip_tags的一个bug浅析
php实例分享之mysql数据备份
ECMall支持SSL连接邮件服务器的配置方法详解
php的慢速日志引起的Mysql错误问题分析
PHP中spl_autoload_register()和__autoload()区别分析
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
PHP防范SQL注入的具体方法详解(测试通过)
PHP中把stdClass Object转array的几个方法
php实现mysql封装类示例
codeigniter框架The URI you submitted has disallowed characters错误解决方法
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
PHP函数addslashes和mysql_real_escape_string的区别
php5.5中类级别的常量使用介绍
PHP文件上传主要代码讲解
php中利用str_pad函数生成数字递增形式的产品编号
Zend studio文件注释模板设置方法
php stream_get_meta_data返回值
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
PHP strstr 函数判断字符串是否否存在的实例代码
分享下PHP register_globals 值为on与off的理解
PHP取整函数:ceil,floor,round,intval的区别详细解析
PHP函数preg_match_all正则表达式的基本使用详细解析
PHP连接局域网MYSQL数据库的简单实例
PHP mysql与mysqli事务使用说明 分享
测试PHP连接MYSQL成功与否的代码
php读取mysql中文数据出现乱码的解决方法
PHP Global定义全局变量使用说明
php使用sql数据库 获取字段问题介绍
浅析Mysql 数据回滚错误的解决方法
实测在class的function中include的文件中非php的global全局环境
©2014-2024 dbsqp.com