【问题标题】:PHP Mysqli bind_result throws warning during prepared insert statementPHP Mysqli bind_result 在准备好的插入语句期间抛出警告
【发布时间】:2012-12-06 19:33:40
【问题描述】:

以下准备好的语句有 5 个变量。

INSERT INTO folder (folder_name, folder_parent_id, folder_user_id, folder_order, hk_created) VALUES (?,?,?,?,?);

当我致电 $_STATEMENT->bind_result( $_RESULT ); 时收到此警告

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement

虽然很明显这是真的(5 个变量,1 个结果变量),但 INSERT 语句在执行时只返回真(成功)或假(失败)。以防万一我遗漏了什么,我尝试向 bind_result() 提供 5 个变量,但我仍然收到相同的消息。

插入查询成功执行。我应该只是@suppress 警告并将其归结为 PHP 中的怪癖或错误(有时我想知道是否有区别)还是我遗漏了什么?

编辑以反映我尝试为 bind_result() 提供 5 个变量

【问题讨论】:

  • an INSERT statement when executed only returns true or false。是的。没有要绑定的结果。 INSERT 没有“结果”。

标签: php mysqli prepared-statement


【解决方案1】:

您不能将bind_result 与INSERT 查询一起使用。它没有结果。

$_STATEMENT->execute() 将返回 TRUE 或 FALSE。如果您想查看插入了多少行,请使用 $_STATEMENT->affected_rows。

【讨论】:

  • 现在更有意义了,谢谢!我以为我需要绑定才能获得真假,但我想这与 execute() 给出的真/假相同
  • 是的,bind_result 用于查询返回的字段。只有SELECTs 有“结果”:-P
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
相关资源
最近更新 更多