0

我的代码在帖子上采用多个值,例如`

<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')";

它仅将数组数组插入数据库。如何将帖子值添加到数据库?

提前致谢

艾美丝

4

3 回答 3

0

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

foreach ($_POST as $key => $value)
{
    echo "$key = $value";
}
于 2013-09-06T21:23:03.350 回答
0

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

另请注意,您的代码容易受到SQL 注入攻击

于 2013-09-06T21:02:03.413 回答
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 新手,所以我将澄清一下当您尝试通过连接将变量放入字符串中时使用 (array, array) 插入行的行为或解释,例如在您的示例中(双引号内的变量在将它们添加到字符串之前由 PHP 解释,因为我想您很清楚,因为您使用了这种语法),所述变量首先被解析为字符串。现在,PHP 不是那种质疑你在做什么的人,所以他大部分时间都会顺其自然,而不是抛出异常,他只会将你的变量(无论是什么类型)转换为字符串,他如何将数组转换为字符串?当然,只需返回“数组”。

因此,在您的代码中,PHP 将数组转换为字符串,您最终会得到“插入表(col1,col2)值('.'array'.','.'array'.')”。

于 2013-09-06T21:27:28.310 回答