本文实例讲述了php批量添加数据与批量更新数据的实现方法。分享给大家供大家参考。具体分析如下:
php如果要批量保存数据我们只要使用sql的insert into语句就可能实现数据批量保存了,如果是更新数据使用update set就可以完成更新了,操作方法都非常的简单,下面整理两个例子.
批量数据录入
设计方法:同时提交多条表单记录,为每一条记录设置相同的文本域名称,然后在表单处理页中,通过for循环来读取提取表单提交的数据,最后以数据的形式将数据逐条添加到数据库中.
其中,应用一个count()函数来获取数组中元素的个数.int count(mixed var);
表单提交页面,代码如下:
<form name=\"form1\" method=\"post\" action=\"index_ok.php\">
<tr>
<td>商品名称</td>
<td>编号</td>
<td>单价</td>
<td>数量</td>
<td>产地</td>
<input name=\"data\" type=\"hidden\" value=\"<?php echo $data;?>\">
</tr>
<tr>
<td><input name=\"sp_name[]\" type=\"text\" id=\"sp_name\" size=\"15\"></td>
<td><input name=\"sp_number[]\" type=\"text\" id=\"sp_number\" size=\"10\"></td>
<td><input name=\"price[]\" type=\"text\" id=\"price\" size=\"8\"></td>
<td><input name=\"counts[]\" type=\"text\" id=\"counts\" size=\"8\"></td>
<td><input name=\"address[]\" type=\"text\" id=\"address\" size=\"15\"></td>
</tr>
<input type=\"submit\" name=\"submit\" value=\"提交\">
<input type=\"reset\" name=\"reset\" value=\"重置\">
</form>
数据库连接页,代码如下:
<?php
$id=mysql_connect(\"localhost\",\"root\",\"password\") or die(\'connection failed\'.mysql_error());
if(mysql_select_db(\'mydatabase\',$id))
echo \"\";
else
echo(\'select db failed:\'.mysql_error());
?>
表单处理页,代码如下:
<?php session_start(); include(\"conn/conn.php\");
if($submit==true){
for($i=0;$i<count($sp_name);$i++){
$path=$_POST[\"sp_name\"][$i];
$path1=$_POST[\"sp_number\"][$i];
$path2=$_POST[\"price\"][$i];
$path3=$_POST[\"counts\"][$i];
$path4=$_POST[\"address\"][$i];
$query=mysql_query(\"insert into tb_products(sp_name,sp_number,price,counts,address,data) values(\'$path\',\'$path1\',\'$path2\',\'$path3\',\'$path4\',\'$data\');}
if($query==true){
echo\"提交成功\";
else
echo\"提交失败\";}
}
?>
批量更新数据
主要通过while, list(),each()函数来实理数据的批量更新,list()函数用于一次性为多个变量赋值,代码如下:
<?php session_start(); include(\"conn/conn.php\");?>
<form name=\"form1\" method=\"post\" action=\"index_ok.php\">
<?php $query=\"select * from tb_users\";
$result=mysql_query($query);
if($result==true){
while($myrow=mysql_fetch_array($result)){
?>
<tr>
<td><input name=\"<?php echo $myrow[id];?> type=\"checkbox\" value=\"<?php echo $myrow[id]; ?></td>
<td><?php echo $myrow[user];?></td>
<td><?php echo $myrow[popedom];?></td>
<td><?php echo $myrow[operation];?></td>
</tr>
<?php }} ?>
<tr>
<input type=\"submit\" name=\"submit\" value=\"激活\">
<input type=\"submit\" name=\"submit2\" value=\"冻结\">
</tr>
</form>
表单处理页,代码如下:
<?php session_start(); include(\"conn/conn.php\")
if($submit==\"激活\"){
while(list($name,$value)=each($_POST)){
$result=mysql_query(\"update tb_user set operation=\'激活\' where id=\'\".$name.\"\'\");
if($result==true){
echo \"<script> alert(\'激活成功\');window.location.href=\'index.php\';</script>\";}}
if($submit2==\"冻结\"){
while(list($name,$value)=each($_POST)){
$result=mysql_query(\"update tb_user set operation=\'冻结\' where id=\'\".$name.\"\'\");
if($result==true){
echo \"<script> alert(\'冻结成功\');window.location.href=\'index.php\';</script>\";}}
}
?>
总结:心细的朋友会发现两个例子都有几个共同点,一个是表单from的表单名是以counts[]数组形式了,而在php处理接受页面都会使用for 或while来实现遍历了,下面我就简单的给大家分析这两个例子.
counts[]:这个在表单中是代表数组,如果你有10个表单那么我们name=counts[] 意思他们内个都是一样数组,知道这个是数组了就知道下面知道为什么会使用遍历了.
for或while:因为表单过来的是数组我们就可以遍历数组然后对数据进行保存了,如下代码:
while(list($name,$value)=each($_POST)){ 或
for($i=0;$i<count($sp_name);$i++){ 两个实现结果是一样的.
希望本文所述对大家的php程序设计有所帮助。