我有点不理解 - 关于更新,插入,删除查询result_metadata返回false?因为:mysqli_stmt :: result_metadata在插入,更新,删除查询时返回false吗?
$meta = $stmt->result_metadata();
if($meta === false){
throw new Exception(...));
}
当我尝试运行更新,插入或删除查询时抛出异常。但只有在错误时才应该是错误的。 (来自php手册)
我有点不理解 - 关于更新,插入,删除查询result_metadata返回false?因为:mysqli_stmt :: result_metadata在插入,更新,删除查询时返回false吗?
$meta = $stmt->result_metadata();
if($meta === false){
throw new Exception(...));
}
当我尝试运行更新,插入或删除查询时抛出异常。但只有在错误时才应该是错误的。 (来自php手册)
该函数旨在返回有关您刚才查询的数据(元数据!)的数据。插入行,更新行和删除行的操作通常不会返回结果集。
(至少不是在MySQL在某些其他数据库一样,Postgres的,还有的RETURNING
条款等)
From the comments on the mysqli_stmt_result_metadata
manual page:
如果result_metadata()返回false,但错误/错误号/ sqlstate告诉你没有发生错误,这意味着你的查询不会产生结果集,即INSERT/UPDATE/DELETE查询而不是SELECT查询。
这是在文档中说的“如果传递给mysqli_prepare()的语句是产生结果集的语句,mysqli_stmt_result_metadata()返回结果对象”,但它可能并不清楚这是什么引起的究竟。
噢谢谢你,但是接着如何检测在调用结果元数据函数时是否有错误,或者它是插入/更新/删除查询? – Rihards 2010-06-27 21:31:16
[检查错误](http://us2.php.net/manual/en/mysqli-stmt.error.php)或在[SQLSTATE]戳(http://us2.php.net/manual/ en/mysqli-stmt.sqlstate.php) - 如果它们包含错误,那就是你的错误。如果它们不包含错误,则不会有错误。 – Charles 2010-06-27 23:16:27