mysql_real_escape_string介绍
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。
mysql_real_escape_string 优于addslashes。因为 mysql_real_escape_string考虑到字符集的问题因此可以安全用于 mysql_query()。另外需要注意的是mysql_real_escape_string()不能转义%及_,只能转义一下字符:
- \\x00
- \\n
- \\r
- \\
- '
- "
- \\x1a
注意:有些时候需要将mysql_real_escape_string与mysql_set_charset一起使用。
mysql_real_escape_string语法及参数
语法:
mysql_real_escape_string(sql_str,con)
参数:
| 参数 | 描述 |
|---|---|
| sql_str | 必需。需要转义的SQL语句 |
| con | 可选。mysql连接标识符,如果没有设置该参数,则直接使用上一个mysql连接标识符 |
mysql_real_escape_string构建安全的SQL语句
本实例介绍了使用mysql_real_escape_string函数处理表单提交过来的数据,从而构建一个安全的SQL语句,避免了SQL注入攻击。
<?php
function opendata ($host,$user,$pass) {
try {
if ($db = mysql_connect ($host,$user,$pass)){
return $db;
} else {
throw new exception (\"Sorry, could not connect to mysql.\");
}
} catch (exception $e) {
echo $e->getmessage ();
}
}
/* http://www.manongjc.com/article/1241.html */
function selectdb ($whichdb, $db){
try {
if (!mysql_select_db ($whichdb,$db)){
throw new exception (\"Sorry, data could not be opened.\");
}
} catch (exception $e) {
echo $e->getmessage();
}
}
function closedata ($db){
mysql_close ($db);
}
$db = opendata (\"localhost\",\"root\",\"\");
selectdb (\"mydata \",$db);
$_POST[\'user\'] = \"myname\";
$_POST[\'pass\'] = \"mypassword\";
function validatelogin ($user,$pass){
mysql_real_escape_string ($user);
mysql_real_escape_string ($pass);
$thequery = \"SELECT * FROM userlogin WHERE username=\'$user\' AND password=\'$pass\'\";
if ($aquery = mysql_query ($thequery)){
if (mysql_num_rows ($aquery) > 0){
return true;
} else {
return false;
}
} else {
echo mysql_error();
}
}
if (validatelogin ($_POST[\'user\'],$_POST[\'pass\'])){
echo \"You have successfully logged in.\";
} else {
echo \"Sorry, you have an incorrect username and/or password.\";
}
closedata ($db);
?>
mysql_real_escape_string()函数在本实例的主要作用:
- 防止SQL Injection攻击,也就是你必须验证用户的输入
- 操作数据的时候避免不必要的字符导致错误
继续阅读与本文标签相同的文章
上一篇 :
谷歌正式推送Android 10.0正式版!
下一篇 :
开学AI登场!南京高校用人脸识别查考勤管理学生
-
中国第4大运营商来袭,携号转网套路多,移不动联不通信不过拜拜
2026-05-14栏目: 教程
-
美国让华为更强大,9个月入账6千亿增速超2成,5G合同已签60多份
2026-05-14栏目: 教程
-
未来几年,这4个大学专业最吃香,前景广阔堪称铁饭碗!
2026-05-14栏目: 教程
-
这间屋子没有电话
2026-05-14栏目: 教程
-
曾经扬言“我要摧毁人类”的机器人,在拥有公民身份后,近况如何?
2026-05-14栏目: 教程
