【问题标题】:How to insert multiple data of same name from single form in multiple row of same column of table如何将单个表单中的多个同名数据插入表的同一列的多行中
【发布时间】:2013-12-26 05:04:08
【问题描述】:

我有

<form action="entry.php" method="post" >
<table>
<tr>
    <td>
        <input type="text" name="searchid[]" id="searchid" placeholder="Data 1" ><br />
        <input type="text" name="searchid[]" id="searchid" placeholder="Data 2" ><br />
        <input type="text" name="searchid[]" id="searchid" placeholder="Data 3" ><br />
        <input type="text" name="searchid[]" id="searchid" placeholder="Data 4" ><br />
    </td>
</tr>
<tr>
<td><input type="submit" name="submit" id="submit" value="submit" /></td>
</tr>

</table>    
</form>

还有entry.php代码,

<?php
include "db.php";

if (isset($_POST["submit"]))

$data1 = mysql_real_escape_string($_POST['searchid']);

$query1 = "INSERT INTO php_test (name) VALUES ('$data1')";
$query = mysql_query($query1,$connection);

if($query){
    header ("location: index.php");
    }
else{
    echo "Something Wrong";
    }

?>

此代码处理单个输入数据,但是, 我想在同一列的单独字段中输入四个数据,当我提交时,它会在单独的行中插入数据,字段名称相同并且

【问题讨论】:

标签: php html mysql sql


【解决方案1】:

$_POST['searchid'] 是一个数组,而不是单个字符串。你需要遍历它们:

if (isset($_POST["submit"]))
    foreach ($_POST['searchid'] as $searchid) {
        $data1 = mysql_real_escape_string($searchid);
        mysql_query("INSERT INTO php_test (name) VALUES ('$data1')") or die(mysql_error());
    }
}
header("location: index.php");

此外,删除 HTML 中重复的 id="searchid" 属性。 ID 必须是唯一的。您可能根本不需要这些元素拥有 ID。

如果你有多个列,你可以这样做:

if (isset($_POST["submit"]))
    foreach ($_POST['searchid'] as $index => $searchid) {
        $data1 = mysql_real_escape_string($searchid);
        $data2 = mysql_real_escape_string($_POST['searchid2'][$index]);
        mysql_query("INSERT INTO php_test (name, name2) VALUES ('$data1', '$data2')") or die(mysql_error());
    }
}

【讨论】:

  • 您好先生,如果我要再添加一个输入字段和一个名称为“searchid 2”的列,那么如何为两个列做同样的事情“这可能吗?”
【解决方案2】:

当您在数组中获得价值时。所以你应该把你的插入语句放在循环中。可能是这样的:-

正如建议的那样,您不能mysql_real_escape_string 覆盖数组。所以你应该从每个值的循环内部删除顶部和mysql_real_escape_string

$data1 = $_POST['searchid'];
foreach($data1 as $postValues) {
  $name = mysql_real_escape_string($postValues);
  $query1 = "INSERT INTO php_test (name) VALUES ('$name')";
  $query = mysql_query($query1,$connection);
}

【讨论】:

  • 警告:mysql_real_escape_string() 期望参数 1 是字符串,数组在第 6 行的 F:\GoogleDrive\www\search engine\entry.php 中给出警告:为 F 中的 foreach() 提供的参数无效:\GoogleDrive\www\search engine\entry.php 在第 8 行 注意:未定义的变量:在 F:\GoogleDrive\www\search engine\entry.php 中的第 12 行查询 有问题
【解决方案3】:

请尝试以下代码:

<?php
   include "db.php";

   if (isset($_POST["submit"]))

   foreach($_POST['searchid'] as $id){          
       $searchid= mysql_real_escape_string($id);
       $query1 = "INSERT INTO php_test (name) VALUES ('$searchid')";
       $query = mysql_query($query1,$connection);
   }
   if($query){
     header ("location: index.php");
   }
   else{
     echo "Something Wrong";
   }

?>

【讨论】:

  • 你不能在数组上调用mysql_real_escape_string
【解决方案4】:

试试这个:

<?php
include "db.php";

if (isset($_POST["submit"]))


foreach($_POST["submit"] as $searchval) {
  $query1 = "INSERT INTO php_test (name) VALUES ('$searchval')";
  $query = mysql_query($query1,$connection);
}

if($query){
  header ("location: index.php");
}
else{
  echo "Something Wrong";
}

?>

【讨论】:

  • 两个问题: 1.您受到SQL注入的影响。 2.你只是检查最后一次插入是否成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多