动态插入多个值

时间:2016-10-04 15:58:16

标签: php

这是我的index.php文件,它有一个简单的表单,但是使用jscript我会动态添加更多输入,然后我需要将这些输入插入到我的数据库中。

<form action="insert.php" method="post">
    <input type="text" name="uid" placeholder="uid">
    <input type="text" name="cid_1" placeholder="cid1">
    <input type="text" name="cid_2" placeholder="cid2">
    <input type="submit" value="Register" name="submit" />
</form>

我已创建insert.php,如下所示。我只需要输入每个输入,但实际输入将按照我的说法动态添加,所以我只需要应用while或foreach函数我猜但我不确定该怎么做,希望有人可以帮助我这个

我需要的另一件事,在这种情况下一切正常,但即使某些输入为空,它也会每次都插入。我也找不到任何相关的东西。

感谢您的帮助。

<?php
$link = mysqli_connect("localhost", "root", "", "test");

$uid = mysqli_real_escape_string($link, $_POST['uid']);
$cid1 = mysqli_real_escape_string($link, $_POST['cid_1']);
$cid2 = mysqli_real_escape_string($link, $_POST['cid_2']);

$sql = "INSERT INTO table (uid, cid) VALUES ('$uid', '$cid1'), ('$uid', '$cid2')";
mysqli_query($link, $sql)
?>

1 个答案:

答案 0 :(得分:2)

从您的SQL查询中我了解到,在uid下,您将从输入中存储动态“cid”值。所以你要为“cid”添加动态输入字段。

为了捕获服务器上的动态字段,您必须将下面给出的输入字段命名为将在服务器上作为数组发布。

<input type="text" name="cid[]" placeholder="cid1">

接下来,您将遍历该数组并将每个输入数据保存在表中。

完整代码:

HTML

<form action="insert.php" method="post">
<input type="text" name="uid" placeholder="uid">
<input type="text" name="cid[]" placeholder="cid1">
<input type="text" name="cid[]" placeholder="cid2">
<input type="submit" value="Register" name="submit" />

PHP

$mysqli = new mysqli('localhost','usename','password','table');

$uid = $mysqli->real_escape_string($_POST['uid']); 
if($uid !== ''){
    if(isset($_POST["cid"]) && is_array($_POST["cid"])){
        foreach ($_POST["cid"] as $key => $value) {
            $value = $mysqli->real_escape_string($value);

            if($value !== ''){
                // insert into table
                $insert_row = $mysqli->query("INSERT INTO test ( uid, cid ) VALUES( '$uid', '$value' )");
            }
            else{
                echo ($key+1)." no cid field is empty";
                break;
            }
         } 
    }
}
else
    echo "uid is empty";