循环的php如下: for($j=0;$j<count($selectscriptresult);$j++){
$scriptid=$selectscriptresult[$j]['id'];
$wats_id=$productName.'_sc_'.$scriptid;
$updateidsql="update `script` set wats_script_id='$wats_id' where id=$scriptid";
$copyproject->query($updateidsql);
$selectoriginalscriptsql="select * from `script` where project=$source_pid";
$selectoriginalscriptresult=$copyproject->query($selectoriginalscriptsql);
$data_tempscript['originalid']=$selectoriginalscriptresult[$j]['id'];
$data_tempscript['originalname']=$selectoriginalscriptresult[$j]['name'];
$data_tempscript['copyid']=$scriptid;
$data_tempscript['copyname']=$selectscriptresult[$j]['name'];
$temp_scriptresult=$temp_script->add($data_tempscript);
}
核心意思就是在一张表中根据一条记录的id来update另外这条记录一个字段。然后去更新另外一张表
目前记录大概有1700条,每次循环个几百次,就失败了,mysql的log中也没有什么体现。
我怀疑是这个循环的效率有问题,请大家帮我看看。
$scriptid=$selectscriptresult[$j]['id'];
$wats_id=$productName.'_sc_'.$scriptid;
$updateidsql="update `script` set wats_script_id='$wats_id' where id=$scriptid";
$copyproject->query($updateidsql);
$selectoriginalscriptsql="select * from `script` where project=$source_pid";
$selectoriginalscriptresult=$copyproject->query($selectoriginalscriptsql);
$data_tempscript['originalid']=$selectoriginalscriptresult[$j]['id'];
$data_tempscript['originalname']=$selectoriginalscriptresult[$j]['name'];
$data_tempscript['copyid']=$scriptid;
$data_tempscript['copyname']=$selectscriptresult[$j]['name'];
$temp_scriptresult=$temp_script->add($data_tempscript);
}
核心意思就是在一张表中根据一条记录的id来update另外这条记录一个字段。然后去更新另外一张表
目前记录大概有1700条,每次循环个几百次,就失败了,mysql的log中也没有什么体现。
我怀疑是这个循环的效率有问题,请大家帮我看看。
set table1.col=table2.col2
id temp_id name
1 a
2 b
3 ctemp_id是根据id来做的,比如分别设置为sc_1,sc_2和sc_3,
这样的记录大概有1700条,我是用一个for循环来做的,觉得好像效率不高。各位给的办法都是还有另外一张表,现在没有那张表啊。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
(
id varchar(10) AUTO_INCREMENT,
temp_id varchar(10),
name varchar(20)
)
insert into test1(name) values('a1')
insert into test1(name) values('a2')现在要更新test1中temp_id的值,它的构成规则是这样的,两个字符sc加上id值,像上面两条记录如果id是1和2的话,temp_id就应该是sc_1和sc_2
现在是这样的情况,id值是系统自动生成的,我必须先得到id值,然后再得到temp_id值。
写了一个循环就是类似于顶贴这样的:for($j=0;$j<count($selectscriptresult);$j++){
$scriptid=$selectscriptresult[$j]['id'];//从这里能得到id值,是另外一个sql得到的
$temp_id='sc_'.$scriptid;
$updateidsql="update `test1` set temp_id='$temp_id' where id=$scriptid";//更新temp_id
$copyproject->query($updateidsql);
}目前记录大概有1700条,每次循环个几百次,就失败了,mysql的log中也没有什么体现。我怀疑是这个循环的效率有问题,请大家帮我看看。
我想知道用循环来做会造成mysql效率的问题吗?或者会造成mysql连接有问题吗?