对 mysql_real_escape_string 的每次调用都需要再次访问数据库吗?

2024-01-04

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

mysql_real_escape_string()调用MySQL的库函数 mysql_real_escape_string,在后面添加反斜杠 字符:\x00、\n、\r、\、'、" 和 \x1a。

好吧,基本上如果我做过这样的事情:

mysql_query("insert T(C)select'".mysql_real_escape_string($value)."'")

我正在为 mysql_real_escape_string 函数进行 1 次数据库访问,为函数 mysql_query = 2 次数据库访问进行另一次访问?


事实上它使用 mysql 库确实not意味着它与服务器进行往返。

它运行来自 mysql 客户端库的代码,与 php 解释器在同一进程中加载​​。不过,您确实需要连接 - 该功能需要了解一些服务器设置才能正常运行。但这些设置都缓存在 PHP 端的连接信息中。

如果您想验证这一点(并且您使用的是 Linux),请编写一个简单的脚本,例如:

<?php
$link = mysql_connect('localhost', 'user', 'pass');
echo "Connection done\n";
echo mysql_real_escape_string("this ' is a test");
?>

并运行它strace:

$ strace php t.php
....            # here comes the connection to mysql, socket fd == 3
connect(3, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = 0
fcntl(3, F_SETFL, O_RDWR)               = 0
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
....            # talking with mysql here
poll([{fd=3, events=POLLIN}], 1, 60000) = 1 ([{fd=3, revents=POLLIN}])
read(3, "8\0\0\0\n5.1.58-log\0\3\0\0\0K-?4'fL+\0\377\367!"..., 16384) = 60
...
read(3, "\7\0\0\2\0\0\0\2\0\0\0", 16384) = 11
                # first php echo
write(1, "Connection done\n", 16Connection done    )       = 16
                # second php echo
write(1, "this \\' is a test", 17this \' is a test)      = 17
munmap(0x7f62e187a000, 528384)          = 0
....

唯一重要的是两个人writes 引起的echo语句之间没有其他系统调用 - 如果没有系统调用,就不可能进行网络通信(无论如何来自 Linux 中的用户空间)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 mysql_real_escape_string 的每次调用都需要再次访问数据库吗? 的相关文章

随机推荐

  • 如何等待 NSURLSession 的所有任务完成?

    Why is NSURLSession创建并恢复 NSURLSessionTask 后操作队列为空 有没有办法判断 NSURLSession 是否有待处理的任务 目标是等待多个任务完成 但这不起作用 NSURLSessionUploadTa
  • 网站结构

    我对 php 还很陌生 我正在尝试确定组织页面并使用 PHP 交付它们的最佳方式 我的两个 基本 想法是 一堆单独的页面都使用 PHP 包含页眉 页脚和菜单 具有菜单 页眉和页脚以及主要内容的包含的单个主页 页面名称来自 URL 中的变量
  • 与其他用户共享 Google 应用程序脚本 - 请求权限并授权脚本

    我创建了一个电子表格 后面有一些 GAS 它打开一个包含一些输入的表单 现在我需要部署 web 应用程序并将其共享给其他一些用户 问题是 当其他用户尝试打开电子表格 在 Google 云端硬盘中共享 时 他们会收到以下错误消息 我已经尝试过
  • Python - 如何将嵌套字典加载到 Pandas 数据框中?

    我有一个长嵌套字典 结构如下 我该如何将其加载到 Pandas 数据框中 的子键Feed Spindle Speed and Tool始终保持不变 但上面的两个级别 Heading N1等以及4001 4002等等在整个字典中都是唯一的或者
  • 使 UIBezierPath 可选择并更改其颜色

    我有一个UIView符合自定义 Canvas 类 这意味着用户可以在其中绘制UIView 每次用户完成绘制后都需要单击 添加 UIButton并且一行将被附加到UITableView below 每行包含 2 个属性name String
  • 如何在 Mac OS X 上安装 rpy2

    我正在尝试在 Mac OSX 上安装 python 的 rpy2 但到目前为止尚未成功 我尝试过 Macports 和 DarwinPorts 但没有成功 import rpy2 within the python shell enviro
  • msg 在 Mirth 中意味着什么?

    我正在尝试学习一些 Mirth 代码 我不断在不同通道的变压器中看到这样的事情 msg PRB PRB 4 PRB 4 2 toString 我知道这是在解析 HL7 消息 并且我知道 msg 可能意味着消息 但是MSG系统范围的变量 每个
  • 对数组类型的映射键进行范围调整并对每个数组进行切片可为每次迭代提供相同的数组

    当尝试将映射的 int 数组键添加到 int 切片的切片时 范围和使用arr 切片数组无法按预期工作 生成的切片仅包含映射中 第一个 键的重复项 循环注释掉 但是 将数组键复制到另一个变量并对新变量进行切片是可行的 并且生成的切片包含不同的
  • 客户从 Web 应用程序接听电话后,Twilio 说“电话正在录音”

  • Xbox Live 创作者计划是否可以授予对 XBL RESTful API 的访问权限以进行 Web 开发?

    我正在开发一个网站 需要从 Xbox Live 访问公共个人资料和游戏信息 为此我需要授权才能使用 Xbox Live RESTful API https learn microsoft com en us gaming xbox live
  • 如何关闭aiohttp ClientSession

    我正在尝试制作一个可以存活一天 一周或更长时间的应用程序 在应用程序的生命周期中 它会向不同的 API 发出请求 其中一些 api 可能需要登录 因此重要的是 我可以随时访问 cookie 所以我需要的是一个不同的 API 可以使用而不会阻
  • ASP.NET MVC:模型绑定复杂类型

    当绑定到对象列表有效时 我在绑定到对象时遇到问题 使用 Mvc3 1 和工具更新 当绑定到 Form 类时 HttpPost 函数接收正确的模型 当绑定到 Form ViewModel 时 HttpPost 函数收到一个空模型 绑定包含其他
  • TypeScript 文件被卡在 Chrome 调试器工具中?

    真正的神秘 最新的镀铬 ts 文件卡在调试器中并且不会更新 我清除缓存 没有任何变化 在调试器工具中 ts 文件保持冻结状态 我尝试退回服务器 关闭 Chrome 它回来卡住了 我尝试删除 js map 文件 没有任何变化 我尝试退回服务器
  • 错误“sqlserver_ado 不是可用的数据库后端”(IIS 上的 PyISAPe)

    当使用 IIS 为 Django 提供服务时 我在将 Django 项目连接到 SQL Server 2008 时遇到问题Django MSSQL http django mssql readthedocs org en latest in
  • Android kotlin mockMaker 问题

    你好 我正在尝试模拟一个最终类 因为 kotlin 中的所有类默认都是最终类 并在我的 gradle 中添加了以下依赖项 testImplementation junit junit 4 12 testImplementation au c
  • 用jquery拦截ajax请求显示BlockUI

    我正在尝试使用 jquery 拦截 ajax 请求 以显示等待消息 就像使用插件 BlockUI 一样 但是如何拦截由 asp net 框架提供的 UpdatePanel 发送的请求 有什么方法可以触发 Thanks 您可以使用开始请求 a
  • 未定义的索引[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我将一个文
  • 使用 Rails 4、邮件表单和 Ajax 发送电子邮件?

    我正在开发一个带有联系表单的应用程序 它是一个单页应用程序 我在后端使用 Rails 在前端使用 Angular 不适用于表单 和 Bootstrap 我正在尝试使用ajax 这样我就不必刷新页面 当我只是用rails 使用Mailform
  • neo4j cypher 将数组/列表转换为字符串

    我的图中的一种类型的边有一个称为roles 它是一个字符串数组 列表 它像是 Bill Smoke Haskell Moore Tadeusz Kesselring Nurse Noakes Boardman Mephi Old Georg
  • 对 mysql_real_escape_string 的每次调用都需要再次访问数据库吗?

    http php net manual en function mysql real escape string php http php net manual en function mysql real escape string ph