Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 首次使用后删除mysql_查询的结果?_Php_Mysql - Fatal编程技术网

Php 首次使用后删除mysql_查询的结果?

Php 首次使用后删除mysql_查询的结果?,php,mysql,Php,Mysql,我遇到了一个奇怪的问题。我自己修复了它,但我仍然好奇它为什么会发生。我想StackOverflow上的人可能会证实这一点。我在我的项目中使用了类似的东西: $users = mysql_query("select * from user where user_id = '$_GET[id]'") or die("Connection Error"); while($user = mysql_fetch_array($users)) $user_activated = $user['user_ac

我遇到了一个奇怪的问题。我自己修复了它,但我仍然好奇它为什么会发生。我想StackOverflow上的人可能会证实这一点。我在我的项目中使用了类似的东西:

$users = mysql_query("select * from user where user_id = '$_GET[id]'") or die("Connection Error");
while($user = mysql_fetch_array($users))
$user_activated = $user['user_activated'];

// For testing purpose. This is not my original code but it's in the same sequence.
while($user = mysql_fetch_array($users))
echo "Test".
回声“测试”从未发生过。$users数组是否应该发生任何更改?还是自动删除?我从来没有遇到过这样的事情。有人能提供一些直觉吗


谢谢大家!

在获取行时,有一个内部指针跟踪您在资源中的位置。一旦你完成了它,你就必须使用
mysql\u data\u seek()
回到开始,并且能够再次查看抓取

但是,如果您需要再次取出数据,最好是第一次将其存储在数组中,如下所示:

while($user = mysql_fetch_array($users)) {
    $users_array[] = $user;
}
然后,您可以随意查看
$users
数组,而无需从资源中重新获取


另一方面,您也应该切换到PDO。除了没有被弃用之外,您还可以访问
fetchAll()
方法。

在获取行时,有一个内部指针跟踪您在资源中的位置。一旦你完成了它,你就必须使用
mysql\u data\u seek()
回到开始,并且能够再次查看抓取

但是,如果您需要再次取出数据,最好是第一次将其存储在数组中,如下所示:

while($user = mysql_fetch_array($users)) {
    $users_array[] = $user;
}
然后,您可以随意查看
$users
数组,而无需从资源中重新获取


另一方面,您也应该切换到PDO。除了没有被弃用之外,您还可以访问
fetchAll()
方法。

一旦您使用了
mysql\uuuuz
中的结果集,指针就位于记录集的末尾。当您要求迭代器再次使用它时,因为该点位于结果的末尾,所以不会发生迭代。要在结果集开始时重置指针,请使用

mysql_data_seek($rs, 0);

一旦您使用了来自
mysql\uu
的结果集,指针就位于记录集的末尾。当您要求迭代器再次使用它时,因为该点位于结果的末尾,所以不会发生迭代。要在结果集开始时重置指针,请使用

mysql_data_seek($rs, 0);

记录未被删除,但mysql_fetch_数组使用指针并对其进行迭代,您可以使用mysql_data_seek将指针重置为初始结果,如下所示:

$users = mysql_query("select * from user where user_id = '$_GET[id]'") or die("Connection Error");
while($user = mysql_fetch_array($users))
$user_activated = $user['user_activated'];
// reset the pointer
mysql_data_seek($users,0) 

// For testing purpose. This is not my original code but it's in the same sequence.
while($user = mysql_fetch_array($users))
echo "Test".

记录未被删除,但mysql_fetch_数组使用指针并对其进行迭代,您可以使用mysql_data_seek将指针重置为初始结果,如下所示:

$users = mysql_query("select * from user where user_id = '$_GET[id]'") or die("Connection Error");
while($user = mysql_fetch_array($users))
$user_activated = $user['user_activated'];
// reset the pointer
mysql_data_seek($users,0) 

// For testing purpose. This is not my original code but it's in the same sequence.
while($user = mysql_fetch_array($users))
echo "Test".

首先,不要使用mysql函数,它们已被弃用。首选使用mysqli*或PDO.mysql_fetch_数组从数据库中获取下一行。由于右上方的while循环在任何可能的行中循环,因此没有任何左循环。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。您必须使用
mysql\u data\u seek
@BenM重置当前记录指针。我完全同意。我觉得在这一点上(我们所有人)都被打败了,所以在所有与MySQL相关的问题的顶部都应该有一个标准的标题,上面有这样的评论:)首先,不要使用MySQL函数,它们不受欢迎。首选使用mysqli*或PDO.mysql_fetch_数组从数据库中获取下一行。由于右上方的while循环在任何可能的行中循环,因此没有任何左循环。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。您必须使用
mysql\u data\u seek
@BenM重置当前记录指针。我完全同意。我觉得它在这一点上(被我们所有人)击败了,所以在所有与MySQL相关的问题的顶部都应该有一个标准的标题,上面有这样的注释:)我看不出OP需要在两个独立的
循环中这样做的逻辑原因。而且,在第一次迭代之后,这可能会抛出一个错误(虽然我还没有测试过),因为您试图将资源ID用作
$user
变量数组。@BenM:因为在单个循环之外的脚本中,数据可能需要在两个不同的位置。关于这个错误你是对的,我没有注意到我的命名惯例。。我看不出OP需要在两个独立的
循环中执行此操作的逻辑原因。而且,在第一次迭代之后,这可能会抛出一个错误(虽然我还没有测试过),因为您试图将资源ID用作
$user
变量数组。@BenM:因为在单个循环之外的脚本中,数据可能需要在两个不同的位置。关于这个错误你是对的,我没有注意到我的命名惯例。。你不能什么都不说就把那个巨大的SQL注入错误留在那里。真的吗?你不能什么都不说就把那个巨大的SQL注入错误留在那里。认真地