,这就是我想要的:
foreach($_POST['something'] as $something){
foreach($_POST['example'] as $example){
$query = mysql_query("INSERT INTO table (row, row2) VALUES ('{$something}','{$example}')");
}
}$_POST['something']和$_POST['example']是输入的数组。
name="something[]"和name="example[]".
问题:
这样,我将两次将数据发送到数据库。因此,我需要一个解决方案,我可以循环槽2阵列,而不是看到数据两次。
编辑
发布于 2010-08-03 16:41:51
$cnt = count($_POST['something']);
$cnt2 = count($_POST['example']);
if ($cnt > 0 && $cnt == $cnt2) {
$insertArr = array();
for ($i=0; $i<$cnt; $i++) {
$insertArr[] = "('" . mysql_real_escape_string($_POST['something'][$i]) . "', '" . mysql_real_escape_string($_POST['example'][$i]) . "')";
}
$query = "INSERT INTO table (column, column2) VALUES " . implode(", ", $insertArr);
mysql_query($query) or trigger_error("Insert failed: " . mysql_error());
}这是另一种方法。这种方法使用扩展的插入,因此应该更高效、更快,并且出于安全考虑使用mysql_real_escape_string。计数检查只是确保两个字段都有相同的计数,如果没有,我认为这是一个错误。如果允许它们有不同数量的字段,您只需使用isset()函数来检查,以确保它们包含一个值。
编辑
当然,这是假设,您不希望对所有的“示例”值进行迭代,并将其分配给每个值。如果你想要那样的话,这是一个小小的改变。
添加了插入数组测试,如果没有不需要更新的元素。谢谢Gumbo的支持。
https://stackoverflow.com/questions/3398618
复制相似问题