PHP将多行文本框内容批量插入到数据库的方法php

/ / 2023-05-11   阅读:2500
PHP将多行文本框内容批量插入到数据库的方法...

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


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

1.jpg


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


第一步:创建需要的数据库 

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] => 经理  

我要评论

昵称:
验证码:

最新评论

共0条 共0页 10条/页 首页 上一页 下一页 尾页
意见反馈