mysqli的bind_param使用数组

2023-11-29

我正在尝试使用 mysqli 准备好的语句将值插入数据库。将插入的值在运行时会有所不同,因此我尝试使用变量而不是列出所有参数。我已经看到我可以使用 call_user_func_array 来实现此目的,但这似乎不起作用。

到目前为止,我的代码如下,尽管为了简单起见大大减少和修改:

// in the real world, these will be set dynamically
$table = 'my_table';
$sql_fields = 'field_1,field_2,field_3,field_4';
$sql_types = 'ssss';
$sql_holders = '?,?,?,?';
$data = array('value_1', 'value_2', 'value_3', 'value_4');

$stmt = $con->prepare("INSERT INTO $table ($sql_fields) VALUES ($sql_holders)");
$params = array_merge(array($sql_types), $data);
call_user_func_array(array($stmt, "bind_param"), $params);

如果我 var_dump $params,我会得到以下内容。

array(5) {
    [0]=>
    string(4) "ssss"
    [1]=>
    string(7) "value_1"
    [2]=>
    string(7) "value_2"
    [3]=>
    string(7) "value_3"
    [4]=>
    string(7) "value_4"
}

这对我来说似乎没问题,但是当我运行脚本时,PHP 崩溃了。我可以注释掉“call_user_func_array”行并且它可以工作。显然什么也没发生,但也没有崩溃。

恐怕我对我的环境不太了解,除了我使用的是 PHP 7、PhpStorm IDE 和 WAMP。当 PHP 崩溃时,我收到 PhpStorm 错误“CLI 已停止工作”。我的研究告诉我,这个错误是 PHP 崩溃而不是 IDE,所以问题应该出在我的代码上。 (顺便说一句,我在两台运行 PhpStorm 的机器上尝试过并得到相同的结果,因此这项研究似乎得到了验证)

有人能解释一下吗?

Thanks


您可以尝试这样做,发送对值而不是实际值的引用:

    $params = array_merge(array($sql_types), $data);
    foreach( $params as $key => $value ) {
        $params[$key] = &$params[$key];
    }
    call_user_func_array(array($stmt, "bind_param"), $params);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysqli的bind_param使用数组 的相关文章

  • Laravel 集成测试:如何断言一个 URL 已被调用但另一个 URL 没有

    我想测试一个向某个 URL 发出请求的控制器 例如 http example com api say hello 但它不会向另一个 URL 发出请求 例如 http example com api say bye bye 我想测试的控制器功
  • 运行没有扩展名的 PHP 页面

    我想在 apache Web 服务器上运行我的 PHP 网页 而不需要 php扩大 所以我添加了以下代码 RewriteEngine on RewriteBase Rewritecond REQUEST URI NC RewriteRule
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 如何用Flutter实现position:sticky和bottom 0?

    我想建立一个带有粘性页脚的列表视图 例如本文的 粘到底 在颤振中 In CSS main footer position sticky bottom 0 但是 Flutter 该怎么办呢 我想要的是 可滚动的大内容 页脚 粘性 可滚动的大内
  • JavaScript 闭包和 setTimeout

    闭包是我在 JS 中还没有完全掌握的东西 我认为这是一个封闭问题 我正在尝试创建一个进度条 每隔 x 秒我想增加 DIV 的宽度 这是应该执行此操作的部分 for i 0 i lt counter i setTimeout function
  • System.Drawing.Graphics.DpiX 始终返回 96

    我有 vb net winform 应用程序 自动缩放模式 dpi 自动缩放 假 自动调整大小 true 更改 DPI 设置后我已退出 我也尝试过重新启动机器 Using g As Graphics form CreateGraphics
  • 如何将我的代码从 v11 迁移到 Discord.js v12?

    我升级到 Discord js v12 但它破坏了我现有的 v11 代码 以下是导致错误的一些示例 TypeError client users get is not a function const user client users g
  • Android 中用颜色填充 ArrayList

    我想创建2个ArrayList 一种持有 16 种颜色 另一种持有 139 种颜色 我有颜色列表 RGB 为 255 126 32 十六进制为 0xFFFF2552 我想使用 ArrayList 稍后从中选择随机颜色 我试过 int 但不起
  • 在通过管道将 STDOUT 传输到文件时捕获 STDERR 的输出

    我的情况很奇怪 我正在尝试使用 Perl 自动备份 SVN 存储库集合 我正在使用 svnadmin dump 命令 该命令将转储发送到 STDOUT 并将遇到的任何错误发送到 STDERR 我需要运行的命令的形式为 svnadmin du
  • 对可拖动项目应用双击

    我有一个黄色按钮 可以将其拖放到灰色面板上 我使用 handleDragStop 函数来处理用户拖放黄色按钮时需要完成的所有任务 一切都很好 但是 我想知道如何启用用户双击黄色按钮的行为并具有与拖放时相同的行为 top icon dragg
  • c# 自定义 Dictionary 接受重复键进行序列化

    我需要实现一个有点类似字典的自定义功能 但可以插入重复的键 所以基本上我需要从 Dictionary 中得到的是将对象序列化为以下 JSON 的可能性 One Value 1 Two Value x One Value 10 Two Val
  • 如何通过 Watin 中的代码关闭弹出窗口拦截器?

    我在通过 watin 代码关闭弹出窗口阻止程序时遇到麻烦 谁能帮我知道如何通过 watin 关闭 IE 的弹出窗口拦截器 如果 IE 中安装了工具栏 如 google yahoo 或 msn 的弹出窗口拦截器 有什么方法可以关闭它们吗 提前
  • 推荐用于托管许多独立补丁的 DVCS 机制

    我有一个项目刚刚开始http sourceforge net projects iotabuildit 更多详细信息请参见http sourceforge net p iotabuildit wiki Home 当前正在使用 Mercuri
  • 如何在ReactJS中使用video元素的playbackRate参数?

    我需要你的帮助来修复我的代码 class header extends Component playVideo You can use the play method as normal on your video ref this ref
  • Lua 5.2 添加 luasocket (不稳定)

    我正在尝试将 luasocket 与 lua 5 2 一起使用 我从 git 存储库下载了代码并构建了它 然后进行 make install 以便生成 core dll 和 mime dll 将它们放入正在开发的自定义 lua 程序目录 C
  • ExpectIt:实施 sudo -i 时遇到问题

    我正在创建一个 Web shell 客户端并成功创建了一个简单的终端 我可以执行基本命令 但我需要执行sudo i并传递密码 发送 sudo i 命令后 我 期望 新用户 作为 root 提示 但 期望 永远等待 我可以看到提示符合预期 该
  • 在下游生成新的 Windows 窗体时如何使用 DI?

    我的 Unity DI 容器正在运行最初与我的 Windows 窗体应用程序 在Program cs我有以下内容 static void Main var container BuildUnityContainer Application
  • 在 jqGrid 中的 loadBeforeSend 上设置 Url

    我有一个用于大量报告的 wcf 服务 该服务将 json 数据返回到我的 jqgrid 一切都按预期进行 但是 由于每个报告查询有大量用户输入 我选择使用与我在服务器上设置的一系列 输入模型 相匹配的 json 字符串 我不想在我的路线中弄
  • 调用 finish() 并重新启动应用程序后,Timber 重复日志

    我有一个触摸监听器在我的 TextView 上 在触摸时 我登录Timber i 然后我打电话finish 如果在 finish 之后 我再次启动我的应用程序 并再次单击 TextView 它将记录两次 然后 3 次 依此类推 如果我用普通
  • 当单元格尚未构建时,如何计算 heightForRowAtIndexPath?

    问题 如何最好地计算 UITableViewController 的 heightForRowAtIndexPath 方法中一行的高度 假设 我正在使用自定义子类 UITableViewCell 子视图的实际大小 例如 UILabels 是
  • removeChild() 方法打破了 for 循环

    我正在使用以下代码从 XMl 文件中删除多个元素 NodeList removeNodeList doc getElementsByTagName server1 Element rootElement doc getDocumentEle
  • Expo React Native,将 PDF 文件保存到“下载”文件夹

    以下代码适用于图像文件 但是当我尝试保存 PDF 文件或其他非媒体格式时 我得到无法创建资产 error 我明白那个世博媒体库旨在处理媒体格式文件 有没有什么替代方案世博媒体库保存其他文件格式 import as FileSystem fr
  • mysqli的bind_param使用数组

    我正在尝试使用 mysqli 准备好的语句将值插入数据库 将插入的值在运行时会有所不同 因此我尝试使用变量而不是列出所有参数 我已经看到我可以使用 call user func array 来实现此目的 但这似乎不起作用 到目前为止 我的代