首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqli::real_escape_string

(PHP 5, PHP 7)

mysqli :: real_escape_string - mysqli_real_escape_string - 转义字符串中的特殊字符以便在SQL语句中使用,同时考虑连接的当前字符集

描述

面向对象的风格

代码语言:javascript
复制
string mysqli::escape_string ( string $escapestr )
代码语言:javascript
复制
string mysqli::real_escape_string ( string $escapestr )

程序风格

代码语言:javascript
复制
string mysqli_real_escape_string ( mysqli $link , string $escapestr )

该函数用于创建可在SQL语句中使用的合法SQL字符串。给定的字符串编码为转义的SQL字符串,并考虑到连接的当前字符集。

警告

字符集必须设置在服务器级别,或者使用API​​函数mysqli_set_charset()来影响mysqli_real_escape_string()。有关更多信息,请参阅字符集的概念部分。

参数

代码语言:txt
复制
`link`   

仅过程样式:由mysqli_connect()或mysqli_init()返回的链接标识符

escapestr

要转义的字符串。

编码的字符是NUL(ASCII 0),\ n,\ r,\,',“和Control-Z

返回值

返回一个转义字符串。

错误/异常

如果没有通过有效的MySQLi连接,执行此函数将返回NULL并发出E_WARNING级别错误。

例子

示例#1 mysqli :: real_escape_string()示例

面向对象的风格

代码语言:javascript
复制
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!$mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", $mysqli->sqlstate);
}

$city = $mysqli->real_escape_string($city);

/* this query with escaped $city will work */
if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", $mysqli->affected_rows);
}

$mysqli->close();
?>

程序风格

代码语言:javascript
复制
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", mysqli_sqlstate($link));
}

$city = mysqli_real_escape_string($link, $city);

/* this query with escaped $city will work */
if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", mysqli_affected_rows($link));
}

mysqli_close($link);
?>

上面的例子会输出:

代码语言:javascript
复制
Error: 42000
1 Row inserted.

注意

注意:对于习惯于使用mysql_real_escape_string()的用户,请注意mysqli_real_escape_string()的参数与mysql_real_escape_string()所期望的不同。所述link标识符至上在mysqli_real_escape_string(),而进行转义字符串至上在mysql_real_escape_string()

扩展内容

  • mysqli_set_charset() - 设置默认的客户端字符集
  • mysqli_character_set_name() - 返回数据库连接的默认字符集

← mysqli::real_connect

mysqli::real_query →

扫码关注腾讯云开发者

领取腾讯云代金券