为什么 MySQLi 库本身不支持命名参数?

2024-05-14

正确的 MySQLi 参数化查询语法来自http://php.net/manual/en/mysqli.quickstart.prepared-statements.php http://php.net/manual/en/mysqli.quickstart.prepared-statements.php:

$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
$stmt->bind_param("i", $id);

但从来没有这样的事情:

$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (:id_value)");
$stmt->bind_param("i", "id_value", $id);

在我看来named parameter替换是在 API 级别实现的合理功能。我很惊讶 MySQLi 只实现了unnamed parameters在图书馆。

有正当理由吗?看到 PDO、DQL、ORM 都如何在查询中采用命名参数,这对我来说没有意义。

我希望 MySQLi 开发人员不会出现“我们很懒并且不想”的情况。我相信一定有一个很好的理由,并且我正在寻找那个理由,或者寻找那个理由的方法。 MySQLi 扩展库中未实现命名参数的原因。


MYSQLi不支持命名参数有两个主要原因:

  1. 它“旨在”(我宽松地使用这个术语)与包装器一起使用,并且
  2. 是对应的,PDO,确实 - 并且没有必要重新发明轮子

详细说明第1点:mysqli,尽管与PDO,变得很容易与良好的包装器相媲美 - 也就是说,包装器支持命名参数(除其他外),而不是mysqli本身。这是设计使然,只有一个原因:

  1. Mysqli被设计为一个快速且灵活的库。

如果开发人员将更多功能合并到基础库中,与直觉相反,它就会变得不太灵活,并且需要更长的加载/执行时间。

Both mysqli and pdo与 PHP 5 一起发布(我相信 PDO 版本为 5.3),因此适用于不同的用途。

您想要更快的执行时间吗?使用mysqli没有包装纸。您想要命名参数吗?使用PDO或建立一个mysqli包装器来处理此类问题 - 但请注意,这会阻碍您的执行时间。

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

为什么 MySQLi 库本身不支持命名参数? 的相关文章

  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt
  • PHP 函数 iconv 字符编码从 iso-8859-1 到 utf-8

    我正在尝试将字符串从 iso 8859 1 转换为 utf 8 但是当我找到这两个字符 和 时 函数返回 一个字符 是一个里面有两个数字的正方形 我该如何解决这个问题 我认为您正在寻找的编码是Windows 代码页 1252 http en
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决
  • 在 PHP 中使用可变变量是不好的做法吗?

    例如 一个简单的MVC类型系统 api class method使用重写为 PHP 变量 htaccess nginx conf 然后做类似的事情
  • 带摘要的 php curl 返回两个响应

    我发现了一个 奇怪 的 php CURL 行为 这让我抓狂 基本上我正在做的是使用curl 进行摘要身份验证的调用 这是我的代码的摘录 curl setopt this gt c CURLOPT HTTPAUTH CURLAUTH DIGE
  • 使用活动目录对 Intranet 站点上的用户进行身份验证

    我建立了一个 内联网 站点 它有自己的登录系统 用户注册为新用户 并使用其上的用户名 密码登录该站点 但是 现在我想扩展它 让 Intranet 站点使用现有的 ActiveDirectory 进行身份验证 这就是我正在寻找的 前进 当用户
  • 如何使用 Google Calendar API 和官方 PHP 库创建全天活动?

    我有这个代码 event new Event event gt setSummary event summary event gt setLocation event location start new EventDateTime sta
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • 将 jQuery 与 Selenium WebDriver 结合使用 - 如何将 JSON 对象转换为 WebElement?

    我正在使用 Selenium WebDriver 我想执行 jQuery 代码来查找一些元素 我的代码如下 public function uploadGrantDoc script return itemlist grant file u
  • 从 PHP 启动守护进程

    对于网站 我需要能够启动和停止守护进程 我目前正在做的是 exec sudo etc init d daemonToStart start 守护进程已启动 但 Apache PHP 挂起 做一个ps aux透露sudo它本身变成了僵尸进程
  • 如何将路径添加到 Apache PATH 变量?

    我在 apache2 的 custom conf 文件中设置了以下内容 SetEnv PATH PATH opt local lib mysql5 bin this is a test 但是它不起作用 当我打电话时 hey shell ex
  • Sublime Text 编辑器中的 PHP 语法检查

    在Gedit中 我可以在当前文档上添加 php l 外部工具 如果我安装了PHP命令行 它将对文档进行语法检查 有没有办法用 Sublime Text 编辑器来做到这一点 注意 我有一台 Mac 并且安装了 PHP CLI 我想我必须将代码
  • PHP 何时实现了函数使用闭包? [复制]

    这个问题在这里已经有答案了 我在 PHP 手册中找不到解释的部分use 我有代码 num 0 array walk recursive REQUEST function mValue use num num 我的 Eclipse 抱怨 Pa
  • PHP 中正确的存储库模式设计?

    前言 我尝试在具有关系数据库的 MVC 架构中使用存储库模式 我最近开始学习 PHP 中的 TDD 并且我意识到我的数据库与应用程序的其余部分耦合得太紧密 我读过有关存储库并使用国际奥委会容器 http laravel com docs 4
  • 访问 PHP 数组对象受保护的属性

    我正在尝试在 Symfony2 中上传多个文件 我正在尝试访问以下请求对象 但无法获取参数属性 如何将文件一一上传 我得到的错误 致命错误 无法访问第 66 行 var www File src Webmuch FileBundle Ent
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • SimpleXML 返回空数组

    我正在尝试使用 Google Maps API 和 PHP SimpleXML 获取城市的纬度和经度 我尝试这样做 xml simplexml load file http maps googleapis com maps api geoc

随机推荐