2017-06-18 63 views
2

我有一个PHP的每个循环发布只有一个记录到数据库,它不会返回任何错误。 我检查了我的html,显然没有错。我尝试了一些SO选项,但仍然没有结果。 这里是我的htmlphp为每个循环发送一行到数据库

<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')"); 
    } 
} 
?> 

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

+0

根据你的'form'只有__one__'username'字段。 –

+0

五个选项的循环,不超过一个用户名;) – hakre

+0

您的脚本很容易发生SQL注入。考虑使用参数化查询。 – hakre

回答

2

您有多个candnameusernameschool都是单一的。仍然采取排列所有元素的形式您cantry follwing代码

... 

    $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); 
    } 
+0

我简化了答案中的代码,但它错过了正确的查询创建。下面的示例显示了通过$ _POST变量进行SQL注入的示例。 – hakre

+0

是的你是对的@hakre :) –

相关问题