mysqli_real_escape_string()函數(shù)根據(jù)當(dāng)前連接的字符集,對于 SQL 語句中的特殊字符進(jìn)行轉(zhuǎn)義。
mysqli_real_escape_string()函數(shù)用來對字符串中的特殊字符進(jìn)行轉(zhuǎn)義, 以使得這個(gè)字符串是一個(gè)合法的 SQL 語句。 傳入的字符串會根據(jù)當(dāng)前連接的字符集進(jìn)行轉(zhuǎn)義,得到一個(gè)編碼后的合法的 SQL 語句。
mysqli_real_escape_string($con, $str)
| 序號 | 參數(shù)及說明 |
|---|---|
| 1 | con(必需) 這是一個(gè)表示與MySQL Server的連接的對象。 |
| 2 | str(必需) 這是一個(gè)字符串,您需要在其中轉(zhuǎn)義特殊字符。 |
mysqli_real_escape_string()返回可與SQL查詢中使用一個(gè)合法的字符串,也就是轉(zhuǎn)義后的字符串。
在無效的連接上調(diào)用此函數(shù)會返回 NULL 并發(fā)出一個(gè) E_WARNING 級別的錯(cuò)誤。
此函數(shù)最初是在PHP版本5中引入的,并且可以在所有更高版本中使用。
以下示例演示了mysqli_real_escape_string()函數(shù)的用法(面向過程風(fēng)格)-
//建立連接
$con = mysqli_connect("localhost", "root", "password", "mydb");
//創(chuàng)建表
mysqli_query($con, "CREATE TABLE my_team(Name VARCHAR(255), Country VARCHAR(255))");
$player = "S'Dhawan";
$country = "India";
//插入記錄
$res = mysqli_query($con, "INSERT into my_team VALUES ('$player', '$country')");
if(!$res){
print("發(fā)生錯(cuò)誤");
}else{
print("插入記錄成功");
}
print("\n");
$player = mysqli_real_escape_string($con, $player);
$country = mysqli_real_escape_string($con, $country);
//插入記錄
$res = mysqli_query($con, "INSERT into my_team VALUES ('$player', '$country')");
if(!$res){
print("發(fā)生錯(cuò)誤");
}else{
print("插入記錄成功");
}
//關(guān)閉連接
mysqli_close($con);
?>輸出結(jié)果
發(fā)生錯(cuò)誤 插入記錄成功
在面向?qū)ο箫L(fēng)格中,此函數(shù)的語法為$con->real_escape_string();。以下是面向?qū)ο箫L(fēng)格的函數(shù)示例;
<?php
//連接到數(shù)據(jù)庫
$con = new mysqli("localhost", "root", "password", "test");
//創(chuàng)建表
$con->query("CREATE TABLE my_team(Name VARCHAR(255), Country VARCHAR(255))");
$player = "S'Dhawan";
$country = "India";
//插入記錄
$res = $con->query("INSERT into my_team VALUES ('$player')");
if(!$res){
print("發(fā)生錯(cuò)誤");
}else{
print("插入記錄成功");
}
print("\n");
$player = $con->real_escape_string($player);
//插入記錄
$res = $con->query("INSERT into my_team (Name) VALUES ('$player')");
if(!$res){
print("發(fā)生錯(cuò)誤");
}else{
print("插入記錄成功");
}
//關(guān)閉連接
mysqli_close($con);
?>輸出結(jié)果
發(fā)生錯(cuò)誤 插入記錄成功
轉(zhuǎn)義字符串中的特殊字符單引號:
<?php
$con = mysqli_connect("localhost","root","password","mydb");
if (mysqli_connect_errno($con)){
echo "連接MySQL失敗: " . mysqli_connect_error();
}
$myName = "Jr's";
$myName = mysqli_real_escape_string($con,$myName);
mysqli_query($con,"INSERT into emp (name) VALUES ('$myName')");
mysqli_close($con);