Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 获取超过120000条记录&;执行更新活动将停止执行_Php_Mysql - Fatal编程技术网

Php 获取超过120000条记录&;执行更新活动将停止执行

Php 获取超过120000条记录&;执行更新活动将停止执行,php,mysql,Php,Mysql,我在表中有超过12000条记录 &我必须获取这些记录&fire更新查询 当我尝试在一段时间后执行此活动时,它会停止执行并出现“服务不可用”错误 我在while循环中获取了记录并启动了更新查询 我的代码如下: $sql_fetch_emails ="SELECT user_id,user_email_id FROM mytable GROUP BY REPLACE(user_email_id, '%40', '@') HAVING COUNT(*) < 2 AND user_emai

我在表中有超过12000条记录

&我必须获取这些记录&fire更新查询

当我尝试在一段时间后执行此活动时,它会停止执行并出现“服务不可用”错误

我在while循环中获取了记录并启动了更新查询

我的代码如下:

    $sql_fetch_emails ="SELECT user_id,user_email_id FROM mytable GROUP BY REPLACE(user_email_id, '%40', '@') HAVING COUNT(*) < 2 AND user_email_id LIKE '%\%40%'";

    $rs_fetch_emails = $con->db_query($sql_fetch_emails);

    $get_records_count= $con->db_num_rows($rs_fetch_emails);

    if($get_records_count>=1)
    {
    $i = 0;
    while($user_email_rs = $con->db_fetch_array($rs_fetch_emails))
    {
        $user_id = $user_email_rs['user_id'];
        $email_id = $user_email_rs['user_email_id'];

        $update_qry = "UPDATE mytable SET user_email_id=REPLACE(user_email_id, '%40', '@') where user_id=".$user_id;

        $con->db_query($update_qry);

        $i++;
    }
$sql\u fetch\u emails=“通过替换(user\u email\u id,'%40','@')从mytable组中选择user\u id,user\u email\u id,其计数(*)小于2,并且用户\u email\u id类似于'\%40%'”;
$rs\u fetch\u emails=$con->db\u query($sql\u fetch\u emails);
$get\u records\u count=$con->db\u num\u rows($rs\u fetch\u email);
如果($get\u records\u count>=1)
{
$i=0;
而($user\u email\u rs=$con->db\u fetch\u数组($rs\u fetch\u email))
{
$user_id=$user_email_rs['user_id'];
$email_id=$user_email_rs['user_email_id'];
$update_qry=“update mytable SET user_email_id=REPLACE(user_email_id,'%40','@'),其中user_id=“.$user_id;
$con->db\u query($update\u qry);
$i++;
}
所以任何人都有解决这个问题的办法


请帮助我

该任务是否可以作为数据库级别的查询执行,而不是在while循环中对记录进行迭代?在现实生活中,如果记录需要更新,发出信号的简单英语条件是什么?
UPDATE mytable SET user_email_id=REPLACE(user_email_id,'%40','@'))如果用户\u email \u id像“%\%40%”
我认为您不需要进行两次查询,您似乎不想保留带有
%40
的电子邮件,那么为什么不在该子句上进行一次带有WHERE的更新呢?之后,您可以找到重复项并删除它们或合并它们。