gpt4 book ai didi

php - MYSQL:更改表后结果集会发生什么变化?

转载 作者:可可西里 更新时间:2023-11-01 08:30:03 25 4
gpt4 key购买 nike

我正在编写的部分脚本要求我确切地知道结果集如何从 MYSQL 查询中获取信息。

我有一个来自 SQL 查询的标准结果,然后我使用 fetch_array 创建一个行数组。

在循环浏览此内容时,假设我删除了从表中找到的行之一。如果我将结果指针重置回第一行,我是否会再次找到该行(即使它不再存在)、找到一个空行或完全错过该行?

换句话说,结果是根据需要向 MYSQL 询问每一行,还是一次性获取整个数组,这样它以后就不会再对表进行任何更改?

提前干杯

编辑

$result = $conn->query("SELECT ID, value FROM table");
while($row=$result->fetch_array()){
if(x){
$conn->query("DELETE FROM table WHERE ID=$row['ID']");
mysqli_data_seek($result,0);
}
}

问题是删除的行会在重置后重复、被跳过或返回其他内容(例如 NULL)吗?

最佳答案

不,它不会删除初始获取结果集中的那一行。

当然,它会删除当前表中的行。

如果您尝试重置指针,该行的初始结果集仍然存在。除非你用另一个覆盖它。

考虑这个例子。假设你的 table 里有这个:

+----+--------+
| id | value |
+----+--------+
| 1 | test1 |
| 2 | test2 |
| 5 | test5 |
+----+--------+

如果你进行这样的操作:

$result = $conn->query('SELECT id, value FROM mytable'); // sample query
while($row = $result->fetch_assoc()) { // fetch all results
if($row['id'] == 5) { // some condition
$conn->query('DELETE FROM mytable WHERE id = 5'); // delete one row in table
}
}

$result->data_seek(0); // reset the pointer
while($row = $result->fetch_assoc()) { // fetch the same result set
echo $row['id'] . '<br/>';
}

它会删除您的中的特定行,但不会删除初始结果中的行。

在初始加载时,它将显示:

1
2
5

如果你刷新它,现在 5 将消失,因为它是一个新的请求和调用的另一个结果集。

关于php - MYSQL:更改表后结果集会发生什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com