说一下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 PUBLIC
- "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <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] => 经理
- )
二、查看数据库中是否已插入数据