【问题标题】:php for each loop sends one row to database [duplicate]每个循环的php将一行发送到数据库[重复]
【发布时间】:2017-06-18 09:09:23
【问题描述】:

我对每个循环都有一个 php,它只将一条记录发布到数据库,并且它不返回任何错误。 我检查了我的 html,显然没有错。我尝试了一些 SO 选项,但仍然没有结果。 这是我的html

<form method="post" action="index.php">
 <input type="text" name="username[]" value="12345" readonly="readonly" />
 <input type="text" name="school[]" value="Degree" readonly="readonly" />
 <select name="candname[]">
    <option></option>
    <option>wayne roony</option>
    <option>ikpa oludo</option>
    <option>meta</option>
    <option>databoy</option>
    <option>lanre</option>
    <option>toafeek</option>
    <option>shola suni</option>
</select>
<br/>
<select name="candname[]">
    <option></option>
    <option>wayne roony</option>
    <option>ikpa oludo</option>
    <option>meta</option>
    <option>databoy</option>
    <option>lanre</option>
    <option>toafeek</option>
    <option>shola suni</option>
</select>
<br/>
<select name="candname[]">
    <option></option>
    <option>wayne roony</option>
    <option>ikpa oludo</option>
    <option>meta</option>
    <option>databoy</option>
    <option>lanre</option>
    <option>toafeek</option>
    <option>shola suni</option>
</select>
<br/>
<select name="candname[]">
    <option></option>
    <option>wayne roony</option>
    <option>ikpa oludo</option>
    <option>meta</option>
    <option>databoy</option>
    <option>lanre</option>
    <option>toafeek</option>
    <option>shola suni</option>
</select>
<br/>
<select name="candname[]">
    <option></option>
    <option>wayne roony</option>
    <option>ikpa oludo</option>
    <option>meta</option>
    <option>databoy</option>
    <option>lanre</option>
    <option>toafeek</option>
    <option>shola suni</option>
</select>

和我的 PHP

<?php 

$con=mysqli_connect("localhost","root","4***","online**");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

 {
    $username = $_POST['username'];
    $school = $_POST['school'];
    $candname = $_POST['candname'];
    for ($i = 0; $i < count($username); $i++) {

        $username = ($username[$i]);
        $school = ($school[$i]);
        $candname = ($candname[$i]);

        mysqli_query($con, "INSERT INTO parlia_votes (username, school, candname) VALUES ('$username', '$school', '$candname')");
    } 
}
?>

我的目标是将所有五个选定的选项发布到数据库中。 感谢您的帮助

【问题讨论】:

  • 根据您的form 只有一个 username 字段。
  • 五个选项的循环,而不是一个用户名;)
  • 您的脚本容易受到 SQL 注入。考虑使用参数化查询。

标签: php


【解决方案1】:

您有多个 candname,但 usernameschool 都是单个的。你仍然可以在表单中为所有元素获取数组,你可以尝试以下代码

    ...

    $username = $_POST['username'][0];
    $school = $_POST['school'][0];
    $candname = $_POST['candname'];
    foreach ($_POST['candname'] as $candname) {
        $query = sprintf(
            "INSERT INTO parlia_votes (username, school, candname) VALUES ('%s', '%s', '%s')",
            $username,
            $school,
            $candname
        );
        $con->query($query);
    }

【讨论】:

  • 我简化了答案中的代码,但是它错过了正确的查询创建。简短的示例显示了通过 $_POST 变量进行 SQL 注入的示例。
  • 是的,你是对的@hakre :)
猜你喜欢
  • 2021-08-27
  • 2020-02-02
  • 2019-05-02
  • 1970-01-01
  • 2017-09-16
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
相关资源
最近更新 更多