>
以下为引用的内容: $query = "select s_no from students where ......"; $re = mysql_query($query,$lnk); while ($form = mysql_fetch_object($re)) |
结果如下,共有这么些SQL语句被执行:
insert into score (s_no,grade,class,class2,score) values ('990001','99','6','a','90')
insert into score (s_no,grade,class,class2,score) values ('990002','99','6','a','86')
insert into score (s_no,grade,class,class2,score) values ('990003','99','6','a','84')
insert into score (s_no,grade,class,class2,score) values ('990005','99','6','b','75')
insert into score (s_no,grade,class,class2,score) values ('990006','99','6','b','80')
insert into score (s_no,grade,class,class2,score) values ('990007','99','6','b','79')
一个班级需要40多次循环,mysql_query()函数执行40余次,在网络环境较好的情况下,耗时1秒左右(mysql就是快)当然,可以生成一条超长的SQL语句,执行一次query.至于哪个效率更高,大家自己试试看吧.这个方法的优点就是可以不必一次次点击"递交",不足之处在于,一次必须把数据全部输入!(有点矛盾?)是的!如果再次使用这个功能,而又输入重复的数据会怎样?解决办法是有的,就是每次循环时执行query前,判断该记录是否存在.这似乎又得执行一条额外的query.就是说,要确保数据正确,而一个班有n个人的话,总共需要N*2次query.
还有一个办法是在生成表单的时候加以限制,这样可以分散系统负荷,明显要好过前一个方案.