mysql数据库函数转义函数_MySql数据库-查询、插入数据时转义函数的使用
最近在看一部php的基礎(chǔ)視頻教程,在做案例的時(shí),當(dāng)通過(guò)用戶名查詢用戶信息的時(shí)候,先使用了轉(zhuǎn)義函數(shù)對(duì)客戶提交的內(nèi)容進(jìn)行過(guò)濾之后再交給sql語(yǔ)句進(jìn)行后續(xù)的操作。雖然能看到轉(zhuǎn)義函數(shù)本身的作用,但是仍然有一些疑惑。
疑惑一:當(dāng)轉(zhuǎn)義數(shù)據(jù)后,數(shù)據(jù)中會(huì)增加一些反斜杠,為了能查找出對(duì)應(yīng)的數(shù)據(jù),那么原來(lái)存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)是不是也已經(jīng)被保存成含有反斜杠的了?
疑惑二:轉(zhuǎn)義數(shù)據(jù)后再向數(shù)據(jù)庫(kù)中插入數(shù)據(jù),保存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否會(huì)含有過(guò)濾后的反斜杠?
帶著這些疑問(wèn)對(duì)用戶提交的表單進(jìn)行測(cè)試。
echo get_magic_quotes_gpc(); //?獲取當(dāng)前 magic_quotes_gpc的配置選項(xiàng)設(shè)置,如果開啟了就會(huì)返回1,否則返回0
$title = $_POST[‘title‘];
$sql = insert into news(`title`) values(‘". $title ."‘);
如果不適用mysql_real_escape_string()轉(zhuǎn)義函數(shù),當(dāng)接收的數(shù)據(jù)中包含單引號(hào)時(shí)就會(huì)引起sql錯(cuò)誤。
$title = mysql_real_escape_string($_POST[‘title‘]);
轉(zhuǎn)義過(guò)后再進(jìn)行插入數(shù)據(jù)就不會(huì)出現(xiàn)上面的問(wèn)題,而且插入到數(shù)據(jù)庫(kù)中的數(shù)據(jù)和輸入時(shí)的一樣,不會(huì)帶有轉(zhuǎn)義時(shí)增加的反斜杠。
當(dāng)查詢數(shù)據(jù)時(shí),也是按照輸入時(shí)的內(nèi)容與數(shù)據(jù)庫(kù)進(jìn)行比較,也能查詢出相應(yīng)的結(jié)果。
由此推論,mysql_real_escape_string()轉(zhuǎn)義函數(shù)只在sql語(yǔ)句執(zhí)行的過(guò)程中起到保護(hù)作用,并不會(huì)對(duì)結(jié)果產(chǎn)生影響。
將過(guò)濾函數(shù)貼出來(lái)。
1 function check_input($value)2 {3 //去除斜杠
4 if (get_magic_quotes_gpc())5 {6 $value = stripslashes($value);7 }8 //如果不是數(shù)字則加引號(hào)
9 if (!is_numeric($value))10 {11 $value = mysql_real_escape_string($value);12 }13 return $value;14 }
以上是自己的理解,與大家分享,如果有誤還請(qǐng)大家批評(píng)指正。
原文:http://www.cnblogs.com/iverson-3/p/6920438.html
總結(jié)
以上是生活随笔為你收集整理的mysql数据库函数转义函数_MySql数据库-查询、插入数据时转义函数的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 依赖注入的三种方式_Java核心知识 S
- 下一篇: jpa mysql脚本迁移_JPA通过L