gpt4 book ai didi

php - 无法更新 mysql 表超过 10000 条记录

转载 作者:行者123 更新时间:2023-11-29 14:59:08 25 4
gpt4 key购买 nike

我的代码在这里

$query = "SELECT * FROM `table`";
$result = mysql_query($query);
$arr = array();
while($info = mysql_fetch_array($result)) {

if (!in_array($info['row'], $arr)) {
$arr[] = $info['row'];
}
}

foreach ($arr as $v) {
$pass = "pass";
$query2 = "UPDATE `table` SET pass = '$pass' WHERE row = '$v'";
$result2 = mysql_query($query2);
}

它处理了 2 分钟,数据库中没有任何反应。我哪里可能错了?

谢谢

编辑:好的,我发现了我的错误。这是关于我为生成随机传递而编写的代码,我没有将其包含在我的问题中。谢谢大家

最佳答案

一种可能性是内存不足:通过将所有行存储在数组中,在到达更新部分之前您将需要大量内存 - 在这种情况下,这充分解释了原因您没有看到任何变化;脚本永远不会到达那部分。

另一种可能性是你的脚本 runs for too long并停止。根据您的服务器配置,set_time_limit在这种情况下可能是一个选择。

但是,您在此处向我们展示的脚本的效果与此单个查询完全相同:

UPDATE `table` SET pass = 'pass'

因为您对选择中的行没有条件,并且您所做的唯一过滤是不在行列中存储具有相同值的多行 - 但是当您进入更新过程时,您正在识别每个行row 通过行列,这意味着它将更新行列中具有相同值的所有行。如果每行的行值都是唯一的,则无需检查您是否已经看到该行;如果它不是唯一的,那么您在更新时需要不同的标准。

如果直接运行更新,PHP 将不需要使用大量内存,MySQL 也不必在更新期间搜索每一行;它可以一次性遍历所有这些。除非您在这里遗漏了一些内容,否则您最好只执行一个简单的查询。

关于php - 无法更新 mysql 表超过 10000 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765009/

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