PHP处理多行文本框的解决方法

说一下PHP如何将数组插入MYSQL数据库,相信这个问题困扰过不少初学者。今天来公司加班,偶已经有一年多没有加班了,偶然在百度知道上发现有网友问到“如何通过循环方式把表单内容update进数据库里”,这个问题其实很简单,唯一有一点技巧的地方就是要把所有的文本框看做数组来处理。于是立马写了几行代码,调试成功了,那就贴出来了,希望能给暂时有困惑的朋友一些启发。

 

问题:对如如下表单,如何用循环的方式存入mysql数据库

 或许有些朋友会一条一条的将其插入到数据库,这样不是不行,但效率太低。仔细分析一下,这个表单其实是有规律的,就三个字段“姓名”、“年龄”、“职位”,能否把他们看成三个集合(数组)呢?这也许就是解决问题的根本。好了,现在我就一步一步的来讲解整个操作的过程。

 

第一步:创建需要的数据库
 
 
  1. CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  
  2.  
  3. CREATE TABLE IF NOT EXISTS `test`.`co_arr` (  
  4. `id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
  5. `nameVARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,  
  6. `age` INT( 2 ) NULL ,  
  7. `position` VARCHAR( 40 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL   
  8. ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci  

 

第二步:文本框以数组的形式来处理

编写一个html文件,将其另存为“index,html”,代码如下:

 
 
  1. <!DOCTYPE html PUBLIC   
  2.           "-//W3C//DTD HTML 4.01 Transitional//EN"   
  3.           "http://www.w3.org/TR/html4/loose.dtd"> 
  4. <html> 
  5. <head> 
  6. <meta http-equiv="Content-Type" content="text/html; charset=GBK"> 
  7. <title>PHP如何将一组文本框以数组的形式插入数据库</title> 
  8. </head> 
  9. <body> 
  10. <form action="show.php" method="post" style="text-align:center;"> 
  11. <table width="600" border="1"> 
  12.     <tr> 
  13.         <th>序号</th> 
  14.         <th>姓名</th> 
  15.         <th>年龄</th> 
  16.         <th>职务</th> 
  17.     </tr> 
  18.     <tr> 
  19.         <td>1</td> 
  20.         <td><input type="text" name="name[]" value="许亮"></td> 
  21.         <td><input type="text" name="age[]" value="25"></td> 
  22.         <td><input type="text" name="position[]" value="SAP开发工程师"></td> 
  23.     </tr> 
  24.     <tr> 
  25.         <td>2</td> 
  26.         <td><input type="text" name="name[]" value="周未红"></td> 
  27.         <td><input type="text" name="age[]" value="22"></td> 
  28.         <td><input type="text" name="position[]" value="招聘主管"></td> 
  29.     </tr> 
  30.     <tr> 
  31.         <td>3</td> 
  32.         <td><input type="text" name="name[]" value="胡睿妮"></td> 
  33.         <td><input type="text" name="age[]" value="24"></td> 
  34.        <td><input type="text" name="position[]" value="银行职员"></td> 
  35.     </tr> 
  36.     <tr> 
  37.         <td>4</td> 
  38.         <td><input type="text" name="name[]" value="张凯"></td> 
  39.         <td><input type="text" name="age[]" value="35"></td> 
  40.         <td><input type="text" name="position[]" value="经理"></td> 
  41.     </tr> 
  42.     <tr> 
  43.         <td colspan="4"><input type="submit" value="保存" /></td> 
  44.     </tr> 
  45. </table> 
  46. </form> 
  47. </body> 
  48. </html> 

在这里要注意了,平时我们写一个文本框,用<input type="text" name="xxx">就可以表示一个文本框,这没错。但今天我们所遇到的问题比较特殊,我们是要处理一组文本框,并不是一个文本框,所以不能这么写。上面提到过,可以用数组的方式来实现。对了,就是以数组的形式来实现。仔细观察,你就会发现上面的代码中,文本框都是这样的:<input type="text" name="xxx[]">,我在文本框的名称xxx后加了一个方括号“[]”,其实name=xxx[]就是把文本框当做数组来处理。

到了这里,其实问题已经得到解决了,为了让大家更清楚这个问题的解决过程,我还是把后面的代码贴出来。

 

第三步:将数组循环插入到数据库

复制下面的代码,并另存为“show.php”,将show.php文件和上面的index.html文件放在同一个目录下。

 
 
  1. <?php  
  2. $db_name="test";  
  3. $table_name="co_arr";  
  4. $connection= @mysql_connect("localhost","root","smtroot"or die(mysql_error());  
  5. $db= @mysql_select_db($db_name,$connectionor die (mysql_error());  
  6. mysql_query("SET NAMES GBK");  
  7.  
  8. echo "<pre>";  
  9. print_r($_POST["name"]);  
  10. print_r($_POST["age"]);  
  11. print_r($_POST["position"]);  
  12.  
  13. //计算传递过来的文本框的行数  
  14. $arr_Length = count($_POST["name"]);  
  15.  
  16. $name_arr = $_POST["name"];  
  17. $age_arr = $_POST["age"];  
  18. $position_arr = $_POST["position"];  
  19.  
  20. /*循环插入语句*/ 
  21. for($i=0;$i<$arr_Length;$i++){  
  22.     $sql = "insert into co_arr(name,age,position)";  
  23.     $sql .= "values('$name_arr[$i]','$age_arr[$i]','$position_arr[$i]')";  
  24.     $query = @mysql_query($sql,$connectionor die(mysql_error());  
  25.     //echo $_POST["name"][$i]."<br>";  
  26. }  
  27. ?> 

 

第四步:查看运行结果

一、查看传递过来的表单数据,会以数组的形式出现

 
 
  1. Array  
  2. (  
  3.     [0] => 许亮  
  4.     [1] => 周未红  
  5.     [2] => 胡睿妮  
  6.     [3] => 张凯  
  7. )  
  8. Array  
  9. (  
  10.     [0] => 25  
  11.     [1] => 22  
  12.     [2] => 24  
  13.     [3] => 35  
  14. )  
  15. Array  
  16. (  
  17.     [0] => SAP开发工程师  
  18.     [1] => 招聘主管  
  19.     [2] => 银行职员  
  20.     [3] => 经理  

二、查看数据库中是否已插入数据

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值