Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么mysql\u real\u escape\u字符串中有资源?_Php_Mysql_Sql Injection - Fatal编程技术网

Php 为什么mysql\u real\u escape\u字符串中有资源?

Php 为什么mysql\u real\u escape\u字符串中有资源?,php,mysql,sql-injection,Php,Mysql,Sql Injection,我一直在想为什么我需要一个连接到SQL的实时资源才能使用mysql\u real\u escape\u string(string$unescaped\u string[,resource$link\u identifier]) 这个函数不是简单地转义数据吗?连接有什么意义?我想在没有连接的情况下使用这个函数,我正在讨论创建一个没有特权的帐户,这样我就可以这样做 我调用一个包装函数runSQL(user,statement),并返回一个具有数据或布尔状态的数组 我一直在考虑让这个runSQL(用

我一直在想为什么我需要一个连接到SQL的实时资源才能使用
mysql\u real\u escape\u string(string$unescaped\u string[,resource$link\u identifier])

这个函数不是简单地转义数据吗?连接有什么意义?我想在没有连接的情况下使用这个函数,我正在讨论创建一个没有特权的帐户,这样我就可以这样做

我调用一个包装函数
runSQL(user,statement)
,并返回一个具有数据或布尔状态的数组

我一直在考虑让这个
runSQL(用户、语句、参数和验证数据)


我只是想要一个理由。我在手册页上找不到“为什么”。

正确的转义部分取决于当前连接的字符集,因此它需要知道有关活动连接的信息


下面是MySQL C API手册的链接,PHP函数使用该手册:

它说:

请注意,
mysql
必须是有效的开放连接。这是必需的,因为转义取决于服务器使用的字符集


从mysql\u real\u escape\u字符串的文档中-

转义中的特殊字符 未替换的_字符串,考虑到 的当前字符集 连接,以便安全放置 它位于mysql_查询()中


一次可以打开多个MySQL连接。通常您会忽略resource参数,因为您的脚本中只使用1个MySQL连接,它默认为上次打开的连接。

您能为我提供一个指向此连接的文档的链接吗?这正是我要找的。谢谢你。奖金循环:有没有办法我可以做到这一点而不被连接?不使用<代码> mysql < /Cord>扩展名,否。请考虑使用一些更现代的东西,如PDO,甚至<代码> mySqLy。但它并没有删除在使用转义/引用函数时需要连接的要求。PHP中的所有MySQL扩展都使用相同的MySQL C API。