PHP mysqli_real_escape_string MySQLi 函数

  • 定义和用法

    mysqli_real_escape_string - 根据当前连接的字符集,对于 SQL 语句中的特殊字符进行转义
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 支持 支持
  • 语法

    mysqli_real_escape_string ( mysqli $link , string $escapestr)
    
    此函数用来对字符串中的特殊字符进行转义, 以使得这个字符串是一个合法的 SQL 语句。 传入的字符串会根据当前连接的字符集进行转义,得到一个编码后的合法的 SQL 语句。
  • 参数

    参数 必需的 描述
    link mysqli_connect()mysqli_init() 返回的链接标识。
    escapestr 需要进行转义的字符串。 会被进行转义的字符包括: NUL (ASCII 0),\n,\r,\,'," 和 Control-Z.
  • 返回值

    转义后的字符串。
  • 示例

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");
    
    /* 检查连接 */
    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";
    
    /* 由于未对 $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);
    
    /* 对 $city 进行转义之后,查询可以正常执行 */
    if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
        printf("%d Row inserted.\n", mysqli_affected_rows($link));
    }
    
    mysqli_close($link);
    
  • 相关函数

    mysqli_set_charset() - 设置默认字符编码
    mysqli_character_set_name() - 返回当前数据库连接的默认字符编码