将多条记录插入db
时出现问题HTML
<input type="input" name="row[][name]">
<input type="input" name="row[][surname]">
<input type="input" name="row[][name]">
<input type="input" name="row[][surname]">
PHP
$returnedData = $_POST['row'];
$sql = array();
foreach( $returnedData as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['name']).'", '.mysql_real_escape_string($row['surname']).')';
}
mysql_query('INSERT INTO tableName (name, surname) VALUES '.implode(',', $sql));
但错误是它打开4行,而我的意思是它为每个输入打开一个新行。
如何插入两条记录?
新信息
当我通过使用foreach来编写已发布的值时,我可以正确地看到值,事情是我无法找到插入到我的表中的解决方案
foreach($returnedData as $data) {
echo '<pre>';
echo $data['name'];
echo $data['surName'];
}
答案 0 :(得分:0)
为帖子的每个实例插入一行,它应该是:
foreach( $returnedData as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['name']).'", '.mysql_real_escape_string($row['surname']).')';
mysql_query('INSERT INTO tableName (name, surname) VALUES '.implode(',', $sql));
}
因为你的方式只插入最后一个。
我认为这是你想要实现的目标
答案 1 :(得分:0)
对于您在问题中概述的HTML表单,$_POST['row']
包含以下结构中的表单数据:
Array
(
[0] => Array
(
[name] => Lara
)
[1] => Array
(
[surname] => Larasen
)
[2] => Array
(
[name] => Linda
)
[3] => Array
(
[surname] => Lindasen
)
)
正如您在foreach
次迭代中所显示的那样,您选择了每个条目和,您显示已禁用错误。因此,您不会收到这样的消息:您正在查找的数据通常缺少和您的迭代4次而不是2次。
您很可能想要创建以下HTML表单:
<input type="input" name="row[0][name]">
<input type="input" name="row[0][surname]">
<input type="input" name="row[1][name]">
<input type="input" name="row[1][surname]">
这为您提供了以下$_POST['row']
表单数据,但不同的结构应该更容易迭代:
Array
(
[0] => Array
(
[name] => Lara
[surname] => Larasen
)
[1] => Array
(
[name] => Linda
[surname] => Lindasen
)
)
底线是:PHP需要一些外部数组索引的帮助,以便正确分组名称和姓氏。
您可以使用此演示试用这两种形式:http://codepad.viper-7.com/kxUsru
如果codepad viper丢失了代码,这里是示例的来源:
<form method="post">
<input type="input" name="row[][name]">
<input type="input" name="row[][surname]">
<input type="input" name="row[][name]">
<input type="input" name="row[][surname]">
<input type="submit">
</form>
<form method="post">
<input type="input" name="row[0][name]">
<input type="input" name="row[0][surname]">
<input type="input" name="row[1][name]">
<input type="input" name="row[1][surname]">
<input type="submit">
</form>
<pre>
<?php
echo htmlspecialchars(print_r($_POST['row'], TRUE));
?>
</pre>