同时将多条记录添加到数据库中

时间:2013-05-18 00:01:59

标签: php mysql

我想通过点击一个按钮在数据库表中添加多个数据,我该怎么做?

<?php

 if( isset($_POST['add']) ){

        $ins = "INSERT INTO informations(`cate_id` ,`location_id` , `name` ,`specialization` , `address` , `telephone` , `time`) VALUES(
    '".$_POST['category']."', 
        '".$_POST['location']."', 
    '".$_POST['name']."', 
    '".$_POST['specialization']."',
    '".$_POST['address']."', 
    '".$_POST['telephone']."', 
    '".$_POST['time']."')";
    $do_ins = mysql_query($ins); 

    echo 'Insert done';

     }

    ?>

1 个答案:

答案 0 :(得分:2)

这是mysql多行插入语法的基本版本:

INSERT INTO mytable (field1, field2, field3)
VALUES 
(value1, value2, value3),
(value4, value5, value6)

使用上面的查询,插入了2行: (value1, value2, value3)(value4, value5, value6)

- 编辑 -

对于表单,您可以在表单输入名称中使用类似数组的语法将变量传递给数组中的PHP。如果您正在使用位置,则可以执行以下操作:

<input type="text" name="locations[0][name]" />
<input type="text" name="locations[0][address]" />

<input type="text" name="locations[1][name]" />
<input type="text" name="locations[1][address]" />

以上输入将填写以下$_POST$_GET条目:

$_POST['locations'][0]['name']
$_POST['locations'][0]['address']

$_POST['locations'][1]['name']
$_POST['locations'][1]['address']

如您所见,这允许您使用循环遍历每个位置。

$locations = array();
foreach($_POST['locations'] as $location) {
    $fields = array_map('mysql_real_escape_string', $location);

    $locations[] = "(\"{$fields['name']}\", \"{$fields['address']}\")"; 
}

$insert = "INSERT INTO locations (name, address) VALUES " . implode(',', $locations);
mysql_query($insert);

您最有可能想要添加一些验证码,以确保它们实际上也填写了所有字段。