Php 获取超过120000条记录&;执行更新活动将停止执行
我在表中有超过12000条记录 &我必须获取这些记录&fire更新查询 当我尝试在一段时间后执行此活动时,它会停止执行并出现“服务不可用”错误 我在while循环中获取了记录并启动了更新查询 我的代码如下: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
$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的更新呢?之后,您可以找到重复项并删除它们或合并它们。