2012-08-14 78 views
0

我在这里修复。我有没有插入多个数据到一个表单的MySQL表的代码。这里是我的代码 -插入在MySQL表多行与PHP

<?php 
if (isset($_POST['submitted'])) { 
    include('config.php'); 
    foreach($_POST['name'] as $row=>$nam) { 
    $name=$nam; 
    $class=$_POST['class'][$row]; 
    echo "<br/>" . $name . "<br/>" . $class; 
    $sql="INSERT INTO multiple (name, class) VALUES ('$name','$class')"; 
    } 
    if (!mysql_query($sql)) die('Error: ' . mysql_error()); 
    echo "1 record added"; 
} 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<label>Name1: 
<input id="name" name="name[]" type="text"> 
<input type="hidden" name="submitted" value="true" /> 
</label> 
<label> Class1: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name2: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class2: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name3: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class3: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name4: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class4: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name5: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class5: 
<input id="class" name="class[]" type="text"> 
</label> 
<input value="Add" type="submit"> 

</form> 

当我按下提交按钮没有在MySQL的表中插入。只有空的字段被创建。如果我插入5个文本字段,我会在sql表中获得5个空字段。

+1

'mysql_ *'已被弃用,你的代码是开放的SQL注入。 – 2012-08-14 21:03:21

+0

现在该做什么?任何想法? – 2012-08-14 21:09:40

+0

请向我们展示您的echo语句的输出。还echo $ sql; – 2012-08-14 21:11:26

回答

1

伊姆罗兹,您使用的[]作为输入元件(未编号的)示例name="class[]"的名称的一部分,当所述表单被提交它建立一个数组。 PHP将会识别的post对象将是$_POST['class']

但是,作为一个数组意味着在将数据插入到数据库中之前,您必须稍微处理它,因为您不能将数组放入数据库

,如果你没有

for($x=0;$x < count($_POST['class']); $x++) 
{ 
    echo $_POST['class'][$x].'<br>'; 
} 

,你将能够看到从输入所有输入公布的名称class[]

当然这是你所需要的核心例子d总的来说,但我只是想表达发布的数据发生了什么。

+0

OP已经考虑到这些是使用foreach循环迭代的数组。 – 2012-08-14 21:29:31

+0

谢谢你克里斯。我现在明白,为什么要插入空字段。非常感谢克里斯! – 2012-08-14 21:35:06

+0

Chris在你展示的系统中仍然在表中插入空行:( – 2012-08-14 21:39:18

0

你在错误的地方}

$sql=}权应echo "1 record added";

我重新格式化您的代码使用正确的缩进后移动和错误是显而易见的。

1

我觉得你的插入查询问题.....尝试这样

$query = mysql_query("INSERT INTO category VALUES('','$name','$class','')") or die(mysql_error());