在 PHP+MySQL 网站的开发中,有的时候会遇见比较特殊的需求,比如说需要点击一个按钮的时候将多条记录存入数据库,或者同时修改多个记录的时候,如果是几条数据的话,手动编写还是可以忍受的,但是如果是非常多的数据就麻烦了。所以可以巧妙的运用 PHP 的数组和循环同时操作多个记录。
注意,SQL 数据库中没有数组的概念。
直接案例分析:
我需要的 PHP 网站的功能是,自动从数据库中读取一串记录,然后用循环的方式把这些记录显示在输入框中,然后我根据需要修改输入框中的数据,然后点击保存按钮,这几个输入框全部需要保存到数据库中。循环代码如下:
$res=mysql_query("SELECT * FROM ty_config ORDER BY id");
while($result=mysql_fetch_array($res)) {
echo'';
}
?>
关键的问题在于:
我使用的是循环的 echo 方式展示数据库中的内容,所以表单输入框的 name 都是相同的。在实际的网页中,提交数据的时候,直接将 $_POST['add'] 的数据存入数据库是不行的,由于 MySQL 中没有数组的概念,所以需要存贮之前,使用 PHP 数组的操作进行分别逐条自动储存。
请注意,我在循环生成表单的代码中,将表单输入框的 name 值 add 后面增加了中括号,为 add[] ,这样做的话,在提交传递参数的 $_POST['add'] 将是数组的形式传递,这样一来就非常好解决了。
if($_POST['submit']){
$add=$_POST['add'];
for($i=0;$i<4;$i++){
$sql="UPDATE ty_config SET last='$add[$i]' WHERE id='$i'";
mysql_query($sql);}
echo'';
}
?>
在循环存储数据之前,我先使用变量 $add 取代了传递参数 $_POST['add'] ,然后在循环中使用 $add[] 逐个取出数组中的值,更新入数据库中。这样,就可以完美解决一次性存入多个数据记录的问题了。