mysqli出现问题怎么办?类似 mysqli_fetch_array() 的错误:参数 #1 必须是 mysqli_result 类型等

2023-11-22

在我的本地/开发环境中,MySQLi 查询执行正常。但是,当我将其上传到我的网络主机环境时,出现以下错误:

致命错误:在...中的非对象上调用成员函数bind_param()

这是代码:

global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);

为了检查我的查询,我尝试通过控制面板执行查询php我的管理员结果是好的。


Answer recommended by PHP Collective

TL;DR

  1. 一直有mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);在你的 mysqli 连接代码中并始终检查 PHP 错误.
  2. 始终用问号替换 SQL 查询中的每个 PHP 变量,并使用以下命令执行查询准备好的声明。它将有助于避免各种语法错误。

解释

有时你的 mysqli 代码会产生如下错误mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given..., Call to a member function bind_param()...或类似的。或者即使没有任何错误,但查询仍然无法正常工作。这意味着您的查询无法执行。

每次查询失败时,MySQL都会解释原因的错误消息。在较旧的 PHP 版本中,此类错误不会转移到 PHP,您得到的只是上面提到的一条神秘的错误消息。因此,配置 PHP 和 mysqli 向您报告 MySQL 错误非常重要。一旦收到错误消息,您就能够修复该错误。

如何获取mysqli中的错误信息

首先,在 mysqli 连接之前始终有这一行all您的环境:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

之后,所有 MySQL 错误都将转为 PHP 异常。未捕获的异常又会导致 PHP 致命错误。因此,如果出现 MySQL 错误,您将收到传统的 PHP 错误。这将立即让您意识到错误原因。堆栈跟踪将引导您找到发生错误的确切位置。

如何从 PHP 获取错误消息

在开发服务器上,确保屏幕上显示错误,而在实时服务器上,请检查错误日志。请参阅我的文章PHP错误报告了解详情。

请注意,如果是 AJAX 调用,请在开发服务器上打开 DevTools (F12),然后打开“网络”选项卡。然后发起您想要看到的结果的请求,它将出现在“网络”选项卡中。单击它,然后单击“响应”选项卡。在那里您将看到确切的输出。在实时服务器上检查错误日志。

如何处理收到的错误消息

首先,您必须找到问题查询。错误信息包含文件名和行号发生错误的确切位置。对于简单的代码来说就足够了,但是如果您的代码使用函数或类,您可能需要遵循堆栈跟踪来定位问题查询。

收到错误消息后,您必须阅读并理解它。这听起来太明显了,如果不是居高临下的话,但学习者常常忽视这样一个事实:错误消息不仅仅是一个警报信号,它实际上包含了一个错误信息。问题的详细解释。您所需要做的就是阅读错误消息并解决问题。

  • 比如说,如果它说某个特定的表不存在,您必须检查拼写、拼写错误和字母大小写。此外,您还必须确保您的 PHP 脚本连接到正确的数据库
  • 或者,如果它说 SQL 语法有错误,那么你必须检查你的 SQL。而且问题点是对的before错误消息中引用的查询部分。

如果您不明白错误消息,请尝试用 google 搜索。浏览结果时,请坚持以下答案explain错误而不是直接给出解决方案。解决方案可能不适用于您的特定情况,但解释将帮助您理解问题并使您能够自己解决问题。

你也必须trust错误消息。如果它说标记的数量与绑定变量的数量不匹配,那么它is所以。对于缺失的表或列也是如此。如果有选择,无论是你自己的错误还是错误消息是错误的,请始终坚持前者。这听起来又有点居高临下,但这个网站上的数百个问题证明这个建议非常有用。

基本调试

如果您的查询似乎不起作用,可能是由以下四个原因引起的:

  1. 执行过程中出现错误。上面已经解释过了。
  2. 由于程序逻辑不正确,SQL 根本没有运行。添加临时调试输出以确保代码到达查询执行的位置。
  3. SQL执行成功,但结果在错误的数据库。仔细检查一下
  4. 输入数据与数据库不匹配。这里有一些建议如何检查
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysqli出现问题怎么办?类似 mysqli_fetch_array() 的错误:参数 #1 必须是 mysqli_result 类型等 的相关文章

  • 在 PHP 数组定义中显示重复键警告

    下面的代码是否可以得到警告 error reporting E ALL s array a gt 1 a gt 1 var export s 你唯一的希望 除了count 你自己 是你的编辑足够聪明 可以突出显示拼写错误 此屏幕截图来自 P
  • 将 #RRGGBB 十六进制值转换为 #AARRGGBB

    414141 与 AARRGGBB 的值是什么 52b531 又如何 我如何使用 PHP 转换它 Regards 奔腾10 AA 是 Alpha 通道 直接转换是将 AA 设置为 FF 以使其完全不透明 414141 becomes FF4
  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • 从 freshdesk api 获取所有用户时获取curl_error(): 2 不是有效的 cURL 句柄资源

    我正在创建自己的系统来管理通过其 API 来自 freshdesk com 的所有票证 我正在发出curl 请求以从freshdesk com 获取数据 通过获取与股票相关的数据 它的工作正常 但是当我通过curl请求请求所有用户时 它会给
  • PHP 的password_verify() 是否可以抵御极长的密码(DoS 攻击)?

    一般攻击场景 2013 年 Django 存在一个普遍漏洞 攻击者可以通过非常大的密码创建极其密集的 CPU 计算 请参阅此处的安全通知 https www djangoproject com weblog 2013 sep 15 secu
  • YUI压缩机或类似的PHP?

    我一直在我的测试服务器上使用 yuicompressor jar 来动态最小化已更改的 JavaScript 文件 现在我已经将网站部署到公共服务器上 我注意到服务器的策略禁止使用 exec 或其等效项 因此我不再执行 java 有没有一个
  • 在php中获取大于2GB的文件大小的最佳方法?

    我想检查本地驱动器上的文件大小windows OS 但是PHP原生函数filesize 仅当文件大小小于时才有效2GB 大于的文件2GB将返回错误的数字 那么 是否有其他方法来获取大于的文件大小2GB 非常感谢 您始终可以使用系统的文件大小
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • 写入 xml 文件时允许的内存大小已耗尽(尝试分配 4459414 字节)[重复] 67108864 字节

    这个问题在这里已经有答案了 可能的重复 php 中允许的内存大小已耗尽 尝试分配 43148176 字节 33554432 字节 https stackoverflow com questions 415801 allowed memory
  • 优雅地退出 Laravel 作用域

    我有一个范围 它根据用户角色以限制方式起作用 您可以将一组规则转发到限制数据库最终输出的范围 一个非常简化的角色限制示例 first name foo 只会返回其记录first name开始于foo 这实际上意味着我已禁止具有该角色的用户查
  • 错误 #520009 - 帐户受到限制

    我收到 520009 错误 帐户 电子邮件受保护 cdn cgi l email protection被限制 当尝试进行并行付款时 我的代码使用沙箱运行良好 但我切换到实时端点 它开始失败 有问题的帐户是有效的 PayPal 帐户 我使用的
  • 在 PHP 中将整数转换为十六进制值

    如何将PHP中第一类中的数字转换为第二类中的数字 是否有内置函数来转换数字 也是我的标题 将整数转换为十六进制值 甚至正确 class Permission const READ 1 const UPDATE 2 const DELETE
  • 彩色 var_dump() 和错误

    我怎样才能将样式设置为var dump 功能和PHP错误样式 如下图所示 目前我有下一个观点var dump with pre var dump pre 没有它将全部在一行中 并且只是纯文本的错误 我搜索了一些 PHP 颜色错误 var d
  • Lumen:无法打开流:.../vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 中的权限被拒绝

    My OS is ubuntu 16 04 and I am running Lumen 5 5 When I try to run the app in the browser I get an error 500 我在 var log
  • Laravel,控制器中的 Auth::user()

    Laravel 框架 为什么我无法在 laravel 项目的控制器中使用 Auth user 查看用户是否已登录 Session 是否未连接到控制器 HomeController php public function isauthoriz
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐

  • 将图标与 JCheckBox 一起使用

    我有一个 swing 应用程序 我想在其中使用带有图标的 JCheckbox 我构建的图标如下 JCheckBox unsubmit new JCheckBox Unsubmit applet undo 当我这样做时 标签和图标出现在我的
  • Rails 使所有路由默认格式为::json

    您可以将所有路由默认为json 我有以下 api 范围 但我想知道您是否可以对全局范围执行相同的操作 scope api defaults format json do get search query location gt search
  • Hive - LIKE 运算符

    我不知道如何处理这个问题 这是我的数据 Table1 Table2 BRAND PRODUCT SOLD Sony Sony ABCD 1233 Apple Sony adv 1233 Google Sony aaaa 1233 IBM A
  • 角度 2 贝宝

    我正在使用 Angular 2 和 Firebase 建立一个新的电子商务项目 我的问题是如何集成贝宝按钮 当客户点击它时 他们将被重定向到贝宝并付款 然后重定向回我的网站 目前 我设法让他们回来 要么按照这个 github 存储库中的指示
  • gnuplot 多条线,X 轴上有时间

    我已经查看了问题 但仍然无法正常工作 我的数据集是这样的 date cpu mem 23 00 39 21 9 2 1 23 00 44 21 8 2 1 23 00 49 21 8 2 1 23 00 54 21 8 2 1 23 00
  • 虚拟函数的Vtable如何工作

    我对虚拟表有一个小疑问 每当编译器遇到类中的虚拟函数时 它都会创建Vtable并将虚拟函数地址放在那里 对于其他继承的类 也会发生类似的情况 它是否在每个类中创建一个指向每个 Vtable 的新指针 如果不是 当创建派生类的新实例并将其分配
  • 我可以使用IdUDPClient发送M-SEARCH请求吗?

    我的网络中几乎没有 uPNP 设备 我正在尝试向网络发送 M SEARCH 请求 并希望收到一些响应 这就是我正在尝试的 var sIP sOut string iPort Word S TStringBuilder begin S TSt
  • 在 Bootstrap 中打开放大图像模式

    我如何open enlarge使用 jquery js 的模式中的图像和不是数据属性 每当用户将图像插入内容编辑器时 我都需要它可单击以使用 js 在模式中展开 因此我不能依赖用户输入他们不知道如何使用的数据属性 我试过 a href my
  • 解析 EDGAR 文件

    我想使用 python2 7 删除 EDGAR 文件中非文档文本的任何内容 可在线获取 txt 文件 这些文件的示例如下 Example EDGAR 从该文件的第 48 页开始提供其文档类型定义 DTD 我的程序的第一部分将 txt 文件从
  • R 中计算 R2(R 平方)的函数

    我有一个包含观察数据和建模数据的数据框 我想计算 R2 值 我期望有一个可以调用的函数 但找不到 我知道我可以自己编写并应用它 但我是否遗漏了一些明显的东西 我想要类似的东西 obs lt 1 5 mod lt c 0 8 2 4 2 3
  • ALSA:防止扬声器欠载的方法

    我正在非交错模式下播放单通道音频 当我将音频数据写入扬声器时 我遇到了问题 ALSA lib pcm c 7339 snd pcm recover underrun occurred 我是这样写的 printf d snd pcm avai
  • 使用存储过程的 Azure documentdb 批量插入

    您好 我正在使用 16 个集合插入大约 3 400 万个 json 对象 每个对象 5 10k 我正在使用存储过程来插入这些文档 我有 22 个容量单位 function bulkImport docs var collection get
  • 平台设备从何处获取名称

    我正在阅读关于围绕总线 设备和驱动程序构建的 Linux 设备模型 我能够了解一些有关设备和驱动程序匹配如何发生的信息 但不清楚总线在这里的作用 总线如何与设备匹配 我对平台设备从何而来还有一个疑问 平台总线只是将每个设备的名称与每个驱动程
  • CompilationRelaxations.NoStringInterning 实际上是如何工作的?

    我在演示 NoStringInterning 时遇到问题 assembly System Runtime CompilerServices CompilationRelaxations System Runtime CompilerServ
  • LINQ 中的*右*外连接

    可以肯定地说 LINQ 中不存在右外连接这样的东西吗 我知道要有效地创建一个 您只需交换左外连接中的表即可 但是您可以将 DefaultIfEmpty 方法应用于等值联接左侧的表以使其成为右外联接吗 经过广泛查找 我找不到任何涉及右外连接的
  • 使用策略模式在 C# 上实现类似多参数 C++ 模板的行为

    我正在尝试使用 C 泛型和基于策略模式的 C 模板来实现这个答案 这是该模式的示例 interface ISomePolicy
  • 我的 C/C++ 应用程序如何确定 root 用户是否正在执行该命令?

    我正在编写一个需要 root 用户权限才能执行的应用程序 如果由非 root 用户执行 它将退出并终止并显示错误消息 例如 pthread getschedparam Operation not permitted 我想让该应用程序更加用户
  • Python 中的切片是如何工作的

    Python 是如何实现的切片表示法工作 那就是 当我写这样的代码时a x y z a a 2 等等 我如何理解哪些元素最终出现在切片中 请在适当的地方添加参考文献 See Why are slice and range upper bou
  • switch 的替代语法

    嘿 PHP 中的 switch 语句有一种替代语法 但此代码不起作用 div div Newspage div div Forum div div 解析错误 语法错误 意外的T INLINE HTML 期待 path to file 行中的
  • mysqli出现问题怎么办?类似 mysqli_fetch_array() 的错误:参数 #1 必须是 mysqli_result 类型等

    在我的本地 开发环境中 MySQLi 查询执行正常 但是 当我将其上传到我的网络主机环境时 出现以下错误 致命错误 在 中的非对象上调用成员函数bind param 这是代码 global mysqli stmt mysqli gt pre