栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Mysqli更新引发对成员函数bind_param()的调用错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysqli更新引发对成员函数bind_param()的调用错误

哦,让我们尝试一个规范的答案。

Call to a member function
(或
expects parameter 1 to be mysqli_result, booleangiven
针对程序样式)本身并不是错误,而仅仅是其他一些问题的 症状
这个非常错误的消息意味着没有应在任何位置创建对象。

所以-创建

$stmt
对象存在问题。
最有可能是查询问题。因此,我们需要跟踪该错误。

除非明确询问,否则Mysqli不会告诉您发生了什么。因此,您必须始终检查与服务器交互的每个mysqli函数的结果,如果结果为FALSE-check

$mysqli->error

将mysqli错误消息转换为PHP错误也很重要,以便根据站点范围的错误报告设置进行处理。

如果您在整个应用程序代码中都使用mysqli_query()而不将其封装到一些帮助程序类中,

trigger_error()
则是引发PHP错误的好方法,因为它还会告诉您发生错误的文件和行号

因此,您的所有

prepare()
,execute()和
query()
调用都必须以这种方式编写:

$stmt = $mysqli->prepare($query) or trigger_error($mysqli->error."[$query]");

或程序性

$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");

在所有脚本中 ,此后将通知您未创建对象的原因。(如果您对此

or
语法感到好奇。请注意,错误消息中还包含查询,以便您直观地检查它并在其他环境中进行测试。

但是
,如果将查询封装到某个类中,则触发错误的文件和行将非常无用,因为它们将指向调用本身,而不是引起某些问题的应用程序代码。因此,当运行封装的mysqli命令时,必须使用另一种方式:

$result = $mysqli->query($sql);if (!$result) {    throw new Exception($mysqli->error." [$query]");}

因为Exception将为您提供一个 堆栈跟踪 ,它将为您提供调用错误查询的位置。

请注意,您通常必须能够看到PHP错误。在实时站点上,您必须查看错误日志,因此必须进行设置

error_reporting(E_ALL);ini_set('display_errors',0);ini_set('log_errors',1);

在本地开发服务器上,可以在屏幕上显示错误:

error_reporting(E_ALL);ini_set('display_errors',1);

当然,绝对不要在语句前使用错误抑制运算符(@)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号