首页 / 技术 / 正文

PHP+MySQL同时增加/修改多个记录解决方案

2015年03月27日 2 条评论 ... 技术 /

在 PHP+MySQL 网站的开发中,有的时候会遇见比较特殊的需求,比如说需要点击一个按钮的时候将多条记录存入数据库,或者同时修改多个记录的时候,如果是几条数据的话,手动编写还是可以忍受的,但是如果是非常多的数据就麻烦了。所以可以巧妙的运用 PHP 的数组和循环同时操作多个记录。

注意,SQL 数据库中没有数组的概念。

直接案例分析:

我需要的 PHP 网站的功能是,自动从数据库中读取一串记录,然后用循环的方式把这些记录显示在输入框中,然后我根据需要修改输入框中的数据,然后点击保存按钮,这几个输入框全部需要保存到数据库中。循环代码如下:

  1. <FORM name="addForm" METHOD="POST" ACTION="admin-img.php" >   
  2. <?php  
  3. $res=mysql_query("SELECT * FROM ty_config ORDER BY id");  
  4. while ($result=mysql_fetch_array($res)) {  
  5. echo '<input type="text" class="forms" name="add[]" placeholder="图片地址" value="'.$resultc['last'].'">';  
  6. }  
  7. ?>  
  8. <input class="bottum" TYPE="submit" name="submit" value="保存">  
  9. </FORM> 

关键的问题在于:

我使用的是循环的 echo 方式展示数据库中的内容,所以表单输入框的 name 都是相同的。在实际的网页中,提交数据的时候,直接将 $_POST['add'] 的数据存入数据库是不行的,由于 MySQL 中没有数组的概念,所以需要存贮之前,使用 PHP 数组的操作进行分别逐条自动储存。

请注意,我在循环生成表单的代码中,将表单输入框的 name 值 add 后面增加了中括号,为 add[] ,这样做的话,在提交传递参数的 $_POST['add'] 将是数组的形式传递,这样一来就非常好解决了。

  1. <?php  
  2. if($_POST['submit']){   
  3. $add=$_POST['add'];  
  4. for ($i=0;$i<4;$i++){  
  5. $sql="UPDATE ty_config SET last='$add[$i]' WHERE id='$i'";  
  6. mysql_query($sql);}  
  7. echo '<script type="text/javascript">alert("保存成功")</script>';  
  8. }  
  9. ?> 

在循环存储数据之前,我先使用变量 $add 取代了传递参数 $_POST['add'] ,然后在循环中使用 $add[] 逐个取出数组中的值,更新入数据库中。这样,就可以完美解决一次性存入多个数据记录的问题了。

2 条评论

Loading...
  1. 小虾

    嘿嘿 不错 不过alert放循环外面比较好吧
    哈哈 我最近也想做个个人博客了呢

    2015-03-29 [回复]
  2. 九零

    同时修改或插入最好做下验证,不然会出现有的不成功的

    2015-04-13 [回复]

发布评论