PHP将多行文本框内容批量插入到数据库的方法php
说一下PHP如何将数组插入MYSQL数据库,相信这个问题困扰过不少初学者。今天来公司加班,偶已经有一年多没有加班了,偶然在百度知道上发现有网友问到“如何通过循环方式把表单内容update进数据库里”,这个问题其实很简单,唯一有一点技巧的地方就是要把所有的文本框看做数组来处理。于是立马写了几行代码,调试成功了,那就贴出来了,希望能给暂时有困惑的朋友一些启发。
问题:对如如下表单,如何用循环的方式存入mysql数据库
或许有些朋友会一条一条的将其插入到数据库,这样不是不行,但效率太低。仔细分析一下,这个表单其实是有规律的,就三个字段“姓名”、“年龄”、“职位”,能否把他们看成三个集合(数组)呢?这也许就是解决问题的根本。好了,现在我就一步一步的来讲解整个操作的过程。
第一步:创建需要的数据库
CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE IF NOT EXISTS `test`.`co_arr` ( `id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL , `age` INT( 2 ) NULL , `position` VARCHAR( 40 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci
第二步:文本框以数组的形式来处理
编写一个html文件,将其另存为“index,html”,代码如下:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>PHP如何将一组文本框以数组的形式插入数据库</title> </head> <body> <form action="show.php" method="post" style="text-align:center;"> <table width="600" border="1"> <tr> <th>序号</th> <th>姓名</th> <th>年龄</th> <th>职务</th> </tr> <tr> <td>1</td> <td><input type="text" name="name[]" value="许亮"></td> <td><input type="text" name="age[]" value="25"></td> <td><input type="text" name="position[]" value="SAP开发工程师"></td> </tr> <tr> <td>2</td> <td><input type="text" name="name[]" value="周未红"></td> <td><input type="text" name="age[]" value="22"></td> <td><input type="text" name="position[]" value="招聘主管"></td> </tr> <tr> <td>3</td> <td><input type="text" name="name[]" value="胡睿妮"></td> <td><input type="text" name="age[]" value="24"></td> <td><input type="text" name="position[]" value="银行职员"></td> </tr> <tr> <td>4</td> <td><input type="text" name="name[]" value="张凯"></td> <td><input type="text" name="age[]" value="35"></td> <td><input type="text" name="position[]" value="经理"></td> </tr> <tr> <td colspan="4"><input type="submit" value="保存" /></td> </tr> </table> </form> </body> </html>
在这里要注意了,平时我们写一个文本框,用<input type="text" name="xxx">就可以表示一个文本框,这没错。但今天我们所遇到的问题比较特殊,我们是要处理一组文本框,并不是一个文本框,所以不能这么写。上面提到过,可以用数组的方式来实现。对了,就是以数组的形式来实现。仔细观察,你就会发现上面的代码中,文本框都是这样的:<input type="text" name="xxx[]">,我在文本框的名称xxx后加了一个方括号“[]”,其实name=xxx[]就是把文本框当做数组来处理。
到了这里,其实问题已经得到解决了,为了让大家更清楚这个问题的解决过程,我还是把后面的代码贴出来。
第三步:将数组循环插入到数据库
复制下面的代码,并另存为“show.php”,将show.php文件和上面的index.html文件放在同一个目录下。
<?php $db_name="test"; $table_name="co_arr"; $connection= @mysql_connect("localhost","root","smtroot") or die(mysql_error()); $db= @mysql_select_db($db_name,$connection) or die (mysql_error()); mysql_query("SET NAMES GBK"); echo "<pre>"; print_r($_POST["name"]); print_r($_POST["age"]); print_r($_POST["position"]); //计算传递过来的文本框的行数 $arr_Length = count($_POST["name"]); $name_arr = $_POST["name"]; $age_arr = $_POST["age"]; $position_arr = $_POST["position"]; /*循环插入语句*/ for($i=0;$i<$arr_Length;$i++){ $sql = "insert into co_arr(name,age,position)"; $sql .= "values('$name_arr[$i]','$age_arr[$i]','$position_arr[$i]')"; $query = @mysql_query($sql,$connection) or die(mysql_error()); //echo $_POST["name"][$i]."<br>"; } ?>
第四步:查看运行结果
查看传递过来的表单数据,会以数组的形式出现:
Array
(
[0] => 许亮
[1] => 周未红
[2] => 胡睿妮
[3] => 张凯
)
Array
(
[0] => 25
[1] => 22
[2] => 24
[3] => 35
)
Array
(
[0] => SAP开发工程师
[1] => 招聘主管
[2] => 银行职员
[3] => 经理
)
上一篇:php 7.2 一些注意事项
下一篇:php远程读取json的方法
我要评论