繁体   English   中英

通过foreach循环插入多个表单字段的数据

[英]Insert data of multiple form fields by foreach loop

我有四个领域。 两个名称字段和两个电子邮件字段。 我必须通过foreach循环插入所有字段数据,但是当我通过foreach循环插入数据时,空白条目也会插入数据库中。

示例代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form method="post">
            Name : <input type="text" name="name[]"><br>
            Email : <input type="text" name="email[]"><br>
            Name : <input type="text" name="name[]"><br>
            Email : <input type="text" name="email[]"><br>
            <input type="submit" name="submit">
        </form>
    </body>
</html>

[![<?php
if(isset($_POST['submit']))
{
    $conn = mysqli_connect("localhost", "root", "", "practice");
    $i=0;

    foreach($_POST as $val)
    {
        $name=$_POST['name'][$i];
        $email=$_POST['email'][$i];

        $sql = "insert into interview (Name, Email) values ('$name', '$email')";
        $result = mysqli_query($conn, $sql);
        $i++;

    }

}
?>

有谁能够帮助我 ?

这是我的数据库表截图。

首先,请参阅此处如何在PHP中阻止SQL注入? 你的查询方式不同,或者你搞砸了。

由于nameemail的索引相同,只需循环一个并通过键引用另一个:

foreach($_POST['name'] as $key => $val) {
    $name  = $val;
    $email = $_POST['email'][$key];

   // prepared statement query
}

或者您可以像这样输入以使数组更像数据库行:

Name  : <input type="text" name="data[0][name]"><br>
Email : <input type="text" name="data[0][email]"><br>

然后轻松循环:

foreach($_POST['data'] as $val) {
    $name  = $val['name'];
    $email = $val['email'];
}
#Simple Answer!
foreach($_POST['name'] as $index => $val) {
    $name  = $val;
    $email = $_POST['email'][$index];

    $sql = "insert into interview (Name, Email) values ('$name', '$email')";
    $result = mysqli_query($DB_Connection, $sql);
}

我们注意到'submit'也是$_POST的值。

它看起来像代码将三次 ,一次为每个经过循环'submit''name''email' (它可能会循环五次,不确定?我只是在循环中echo $val以查看发生了什么。)

看起来你试图遍历$_POST['name']$_POST['email'] ,而不仅仅是$_POST

只要你在每一个中获得相同的数字,那么它应该无关紧要。


代码似乎容易受到SQL注入攻击。

如果存在某些(不可理解的)原因,则无法使用带有绑定占位符的预 准备语句 ,则需要正确转义任何可能不安全的值。 PHP有一个mysqli_real_escape_string函数,专门为此目的而设计。

此外,似乎没有检查mysqli_query返回的错误。 看起来代码正在将其比喻的小指放在嘴角,Dr.Evil风格,并说“我只是假设它将全部计划。什么?”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM