mysqli_real_escape_string()函數(shù)根據(jù)當前連接的字符集,對于 SQL 語句中的特殊字符進行轉(zhuǎn)義。
mysqli_real_escape_string()函數(shù)用來對字符串中的特殊字符進行轉(zhuǎn)義, 以使得這個字符串是一個合法的 SQL 語句。 傳入的字符串會根據(jù)當前連接的字符集進行轉(zhuǎn)義,得到一個編碼后的合法的 SQL 語句。
mysqli_real_escape_string($con, $str)
序號 | 參數(shù)及說明 |
---|---|
1 | con(必需) 這是一個表示與MySQL Server的連接的對象。 |
2 | str(必需) 這是一個字符串,您需要在其中轉(zhuǎn)義特殊字符。 |
mysqli_real_escape_string()返回可與SQL查詢中使用一個合法的字符串,也就是轉(zhuǎn)義后的字符串。
在無效的連接上調(diào)用此函數(shù)會返回 NULL 并發(fā)出一個 E_WARNING 級別的錯誤。
此函數(shù)最初是在PHP版本5中引入的,并且可以在所有更高版本中使用。
以下示例演示了mysqli_real_escape_string()函數(shù)的用法(面向過程風格)-
//建立連接 $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ā)生錯誤"); }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ā)生錯誤"); }else{ print("插入記錄成功"); } //關(guān)閉連接 mysqli_close($con); ?>
輸出結(jié)果
發(fā)生錯誤 插入記錄成功
在面向?qū)ο箫L格中,此函數(shù)的語法為$con->real_escape_string();。以下是面向?qū)ο箫L格的函數(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ā)生錯誤"); }else{ print("插入記錄成功"); } print("\n"); $player = $con->real_escape_string($player); //插入記錄 $res = $con->query("INSERT into my_team (Name) VALUES ('$player')"); if(!$res){ print("發(fā)生錯誤"); }else{ print("插入記錄成功"); } //關(guān)閉連接 mysqli_close($con); ?>
輸出結(jié)果
發(fā)生錯誤 插入記錄成功
轉(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);