【发布时间】:2018-02-01 10:52:06
【问题描述】:
我正在使用此代码插入具有唯一 id 的记录,然后返回刚刚创建的 id 字符串:
$sql ="set @id=UUID();";
$sql .="INSERT INTO `items` (`id`,`parent`, `text`, `type`) VALUES(@id,'".$parent."', '".$text."', '".$type."');";
$sql .="select @id;";
if (mysqli_multi_query($conn, $sql)) {
while (mysqli_more_results($conn)) {
mysqli_use_result($conn);
mysqli_next_result($conn);
}//while
$result = array('id' => mysqli_store_result($conn)->fetch_row()[0]);
}//if
如果一切正常,三个查询应该返回:
- 1/真(我猜)
- 1/真
- 对象
我以前从未使用过这个函数,我想知道:如果插入查询失败会发生什么?
第三个查询还会执行吗?
在这种情况下,我如何检查第二个查询的结果?
编辑:
或者一般来说:
有一组 10 个查询,如果失败,我如何检查哪个查询失败了?
【问题讨论】:
-
“有一组 10 个查询,如果失败,我如何检查哪个查询失败了?” - mysqli_multi_query 的引用手册:“如果返回 FALSE第一条语句失败。要从其他语句中检索后续错误,您必须先调用 mysqli_next_result()。”
-
嗯,这很奇怪,因为经过一些测试,查询失败似乎停止了下一个查询的执行......如果没有下一个结果,我怎么能得到下一个结果? (WTF) 我猜它的目的是:如果第一个查询没问题,那么使用 mysqli_next_result 转到下一个。 (?)