使用php将数组$ _POST值插入数据库

时间:2013-09-06 20:59:07

标签: php

我的代码在帖子上有多个值,如`

<form id='students' method='post' class="form-horizontal no-margin"  name='students' action='manage_shows.php'>
<input class="input-small" type="text"  id='tamil' name='tamil[]' >
<input  class="input-small" type="text"  id='english' name='english[]' >

依旧......

当我尝试插入db显示数组值时

include('config.php'); if(isset($_POST['submit'])) {
$tamil=$_POST['tamil'];
$english=$_POST['english'];
$sql = "INSERT INTO `shows` ( from , to , seats ,  cost , screen ) VALUES ('$fname','$lname','$tamil','$english','$computer')";

它只将数组数组插入数据库。如何将post值添加到数据库?

提前致谢

ameeth

3 个答案:

答案 0 :(得分:0)

您在字段名称上使用[]表示法。这告诉PHP将这些字段视为多值,它将在$ _POST中为每个字段创建一个子数组。您将不得不循环遍历这些数组并单独插入每个值。

另请注意,您的代码容易受到SQL injection attacks的攻击。<​​/ p>

答案 1 :(得分:0)

您可以通过收集的信息使用foreach循环,如下所示;

foreach ($_POST as $key => $value)
{
    echo "$key = $value";
}

答案 2 :(得分:0)

@Marc B的回答是正确的,我可以冒昧地添加一些细节。请参阅,如前所述,您添加到输入名称中的括号基本上表示这些输入包含多个值中的一个,即该输入位于数组内,因此PHP实际上期望所述post参数的值数组,如在这种情况下:

<input class="input-small" type="text"  id='tamil_1' name='tamil[]' />
<input class="input-small" type="text"  id='tamil_2' name='tamil[]' />
<input class="input-small" type="text"  id='tamil_2' name='tamil[]' />

当你发送它时,值将被解析并放在$ _POST ['tamil']中,这将是一个包含3个值的数组,你也会遇到同样的情况,但是你只发送一个值(正如你所理解的那样) ,一个具有一个值的数组,仍然是一个数组),所以你有一个如下所示的结构:

$_POST=array(
    'tamil'=>array(...),
    'english'=>array(...)
);

如@Marc B所述,您可以像这样迭代该数组:

 foreach($_POST['tamil'] as $k=>$v) {
      //Do something with the value stored in $v or the key in $k
 }

现在,你在评论中说你是PHP的新手,所以当你试图在一个字符串中放置一个变量时,我会澄清一下你用(数组,数组)插入行的行为,通过连接或解释,就像在你的例子中(双引号内的变量在将它们添加到字符串之前由PHP解释,因为我认为你很清楚,因为你使用了这种语法),所述变量首先被解析为字符串。现在,PHP并不是那种质疑你正在做什么的人,所以他大部分时间都会使用流程,而不是抛出异常,他只会将你的变量(无论类型)转换为字符串,他如何将数组转换为字符串?当然,只需返回“数组”。

因此,在你的代码中,PHP将数组转换为字符串,你最终会'插入表(col1,col2)值('。'array'。','。'array'。')'。< / p>