繁体   English   中英

为什么mysqli_real_escape_string()不能通过转义分号和斜杠来更改我的字符串?

[英]Why does mysqli_real_escape_string() not change my string by escaping semicolons and slashes?

我有以下用于大致识别机器的代码:

$computerId = "UserAgent:".$_SERVER['HTTP_USER_AGENT']."RemoteAddress:".$_SERVER['REMOTE_ADDR'];

我使用以下代码比较转义字符串和未转义字符串:

echo "Unescaped:
".$computerId."
Escaped:
".mysqli_real_escape_string($conn, $computerId);

这是我得到的输出:

未转义:UserAgent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 68.0.3440.106 Safari / 537.36RemoteAddress ::: 1

转义文件:UserAgent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 68.0.3440.106 Safari / 537.36RemoteAddress ::: 1

如您所见,它们完全相同,并且转义看起来也没有做任何事情,因为两个字符串都包含未转义的反斜杠和分号。 是什么原因造成的?

根据文档

http://php.net/manual/zh/function.mysql-real-escape-string.php

mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符前:\\ x00,\\ n,\\ r,\\,','和\\ x1a。

因此,分号(;)不是该函数转义(或前置)的字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM