mysqli_stmt :: result_metadata在插入,更新,删除查询时是否返回false?

时间:2010-06-27 21:20:38

标签: php mysqli

我有点不理解 - 在更新,插入,删除查询时result_metadata返回false?这是因为:

$meta = $stmt->result_metadata();
if($meta === false){
    throw new Exception(...));
}
当我尝试运行更新,插入或删除查询时,

抛出异常。但只有在出错时才应该是假的。 (来自php手册)

1 个答案:

答案 0 :(得分:1)

该函数旨在返回有关您刚才查询的数据的数据(元数据!)。插入行,更新行和删除行的操作通常不会返回结果集。

(至少在MySQL中没有。在某些其他数据库中,如Postgres,有RETURNING子句......)

From the comments on the mysqli_stmt_result_metadata manual page

  

如果result_metadata()返回false但是错误/ errno / sqlstate告诉您没有发生错误,这意味着您的查询是不生成结果集的查询,即INSERT / UPDATE / DELETE查询而不是SELECT查询。 / p>      

这在文档中说明“如果传递给mysqli_prepare()的语句是生成结果集的语句,mysqli_stmt_result_metadata()将返回结果对象”,但可能并不清楚每个人究竟需要什么