当前位置: 首页 > 图文教程 > 网络编程 > PHP > 多个字段,大量记录的插入操作技巧(PHP)

PHP
随时给自己贴的图片加文字的php代码
一个可分页的基于文本的PHP留言板源码
一个简单的PHP投票程序源码
一个模仿oso的php论坛程序(之一)
一个模仿oso的php论坛程序源码(之二)
一个模仿oso的php论坛程序源码(之三)
dedecms 制作模板中使用的全局标记图文教程
一个简单的PHP&MYSQL留言板源码
PHP实现多服务器session共享之NFS共享的方法
随时给自己贴的图片加文字的php水印
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
火车头采集器3.0采集图文教程
用PHP生成静态HTML速度快类库
Discuz!插件:自动隐藏帖子
php中判断一个字符串包含另一个字符串的方法
dedecms后台验证码总提示错误的解决方法
加速XP搜索功能堪比vista
人尽可用的Windows技巧小贴士之下篇
PHP+Ajax 网站SEO查询工具 提供代码
用PHP实现的生成静态HTML速度快类库

多个字段,大量记录的插入操作技巧(PHP)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 160 ::
收藏到网摘: n/a

以下为引用的内容:
$query = "select s_no from students where ......";
  
  $re = mysql_query($query,$lnk);
  
  while

 ($form = mysql_fetch_object($re))
  
  {
  
  //获得学号的最后两位.
  
  $student_no = $form->s_no % 100;
  
  ?>
  
  <tr>
  
  <td height="20">
  
  <?=$form->s_no;?>
  
  </td>
  
  <!-
  
  动态生成text域的name属性,注意!不要写id属性,以免重复!
  
  ->
  
  <td><input name="a<?=$student_no;?>" type="text"
  size="10" maxlength="10"></td>
  
  <td><input name="b<?=$student_no;?>" type="text"
  size="10" maxlength="10"></td>
  
  </tr>
  
  <?
  
  }
  
  ?>
  
  <tr>
  
  <td height="20" colspan="3"><div align="center">
  
  
  <input type="submit" name="Submit" value="Submit">
  
  </div></td>
  
  </tr>
  
  </table>
  
  </form>
  
  </body>
  
  </html>

结果如下,共有这么些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.
  还有一个办法是在生成表单的时候加以限制,这样可以分散系统负荷,明显要好过前一个方案.