Php MYSQL:更改表后,结果集会发生什么变化?
我正在编写的脚本的一部分要求我确切地知道结果集是如何从MYSQL查询中获取信息的 我有一个来自SQL查询的标准结果,然后使用fetch\u数组生成一个行数组 在循环浏览此内容时,假设我从表中删除了一行。如果我将结果指针重置回第一行,我是否会再次找到该行(即使它已不存在)、找到一个空行,或者完全错过该行 换句话说,结果是要求MYSQL根据需要获取每一行,还是一次获取整个数组,这样以后就不会对表进行任何更改 提前欢呼 编辑Php MYSQL:更改表后,结果集会发生什么变化?,php,mysql,Php,Mysql,我正在编写的脚本的一部分要求我确切地知道结果集是如何从MYSQL查询中获取信息的 我有一个来自SQL查询的标准结果,然后使用fetch\u数组生成一个行数组 在循环浏览此内容时,假设我从表中删除了一行。如果我将结果指针重置回第一行,我是否会再次找到该行(即使它已不存在)、找到一个空行,或者完全错过该行 换句话说,结果是要求MYSQL根据需要获取每一行,还是一次获取整个数组,这样以后就不会对表进行任何更改 提前欢呼 编辑 问题是,重置后删除的行是否会重复,是否会被跳过或返回其他内容,如NULL?否
问题是,重置后删除的行是否会重复,是否会被跳过或返回其他内容,如NULL?否,它不会删除初始获取结果集中的该行 但它当然会删除当前表中的行 如果尝试重置指针,则该行的初始结果集仍然存在。除非你用另一个覆盖它 考虑这个例子。假设你的桌子里有这个:
+----+--------+
| 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/>';
}
如果您刷新它,现在
5
将消失,因为它是一个新请求,另一个结果集被调用。您是否通过获取另一个结果集覆盖了初始结果集?应该仍然存在这将是一个很好的地方张贴您的实际代码来描述您的过程,而不是用文字来解释它you@Ghost我认为你是对的,$结果永远不会改变
$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