当前位置: 首页 > 知识库问答 >
问题:

mysqli bind_参数未设置$stmt->error或$stmt->errno

潘慈
2023-03-14

根据php手册,您可以通过询问$stmt-来检索任何准备好的语句方法中的错误。

例如:

echo "Start\n";
$db = new mysqli('localhost','test','xxxxxx','test');

$val = 1;

$st = $db->prepare('insert into tblTest set field1=?');
if($st == false)
{
    printf("prepare: %s %d\n",$db->error,$st->errno);
}

$rs = $st->bind_param('is', $val);
if($rs == false)
{
    printf("bind_param: %s %d\n",$st->error,$st->errno);
}

$rs = $st->execute();
if($rs == false)
{
    printf("execute: %s %d\n",$st->error,$st->errno);
}

$rs = $st->close();
if($rs == false)
{
    printf("close: %s %d\n",$st->error,$st->errno);
}
echo "Finish\n";

从命令行运行上述命令将显示:

Start
PHP Warning:  mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in test.php on line 14
bind_param: 0
execute: No data supplied for parameters in prepared statement 2031
Finish

PHP将此视为警告,bind_param返回false,但错误

这是虫子吗?

共有1个答案

谭献
2023-03-14

MySQLi::errorMySQLi::errno是RDBMS返回给PHP的错误代码和消息的容器,而不是设置语句时PHP代码中遇到的错误的容器。对bind_param()的错误调用(参数不足)显然无法与RDBMS通信,因此不会从RDBMS接收错误。

根据文档,bind_param()在失败时返回布尔值FALSE。因此,您需要验证它是否被成功调用。

$rs = $st->bind_param('is', $val);
if ($rs) {
  $st->execute();
}
 类似资料:
  • 问题内容: 我试图从具有2个参数的表的数据库中获取数据,当我尝试执行此代码时,它给出错误:参数未设置。我认为这是一个小错误,但我找不到。问题可能出在2个参数,我以前从未使用过2个。谁能帮我? 这是错误 问题答案: 您只需要为Datum值提供第二个参数:

  • 参数设置分为四部分:网站基本信息、统计代码、权限管理 和 安全设置 1.基本信息 1)网站基本信息:包括网站名称、网站简介、网站地址、图标样式设置等基本参数 2)统计图标显示:是指网站下方会出现我要啦的统计代码图标,可以对该图标的显示样式进行选择 (建议:设置统计图标,方便网站管理者点击图标进入报表查看统计数据) 3)页面地址显示:自定义选择是否在“入口网址”和“页面浏览”栏目中显示被浏

  • 我发送POST请求(OKHttp)从Android到Python服务器。 为什么标签为空,我在设置POST参数时丢失了一些点吗?

  • 我从java代码调用存储过程的代码中收到以下错误: 异常跟踪{}org.springframework.jdbc.UncategorizedSQLException:CallableStatementCallback;SQL得未分类SQLException[{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,

  • 我在JPA 2.0中发现了非常奇怪的行为 我正在尝试构建一个看起来像这样的查询,其中 employeId 和 empDepartment 是通过 java 参数传递的长值。 但是上面的查询第一次不工作,它产生了上面的错误,但是当我第二次再次触发相同的方法时,一切都很顺利,每次都是这样,这是什么原因呢?

  • 我使用PostgreSQL和hibernate 我有这个功能: 运行我的项目后 我有这个错误: 当我运行这个查询时: 从decision中选择max(null(split_part(num_ordre_decision),“/”,3),”::int) 在数据库中我有正确的结果 例如,与数据库中的此类数据相关: 我有 1001 但我的问题和冬眠有关