如何将表单数组值插入MySQL?

时间:2011-09-06 13:15:44

标签: php mysql post

我卡住了,我想将数据字段中的表单数据插入MySQL:

<input type='text' name='name[]' />` and `<input type='text' name='url[]' />

我知道如何输出一个字段的数据,如本例

foreach($_POST['name'] as $name)
{
  echo $name;
}

但在我的表单中,我同时拥有<input type='text' name='name[]' /><input type='text' name='url[]' />如何才能使其正常工作?

3 个答案:

答案 0 :(得分:5)

我会尽量避免一遍又一遍地查询数据库并将所有内容放在一个大插入语句中:

$query = "INSERT INTO table1 (name, url) VALUES ";
foreach($_POST['name'] as $i => $name) 
{ 
  // Get values from post.
  $name = mysql_real_escape_string($name);
  $url = mysql_real_escape_string($_POST['url'][$i]);

  // Add to database
  $query = $query." ('$name','$url') ,";
}
$query = substr($query,0,-1); //remove last char
$result = mysql_query($query);

这样你只需要打一次数据库,使插入更快 另一个好处是如果引擎支持事务(InnoDB等),所有插入都发生在单个事务中。

答案 1 :(得分:3)

您可以像这样使用循环的索引器:

foreach($_POST['name'] as $i => $name) 
{ 
  // Get values from post.
  $name = mysql_real_escape_string($name);
  $url = mysql_real_escape_string($_POST['url'][$i]);

  // Add to database
  $sql = "INSERT INTO `table` (`name`, `url`) VALUES ('".$name."', '".$url."')";
  $result = mysql_query($sql);
} 

当然,在将值添加到查询中之前,最好对值使用mysql_real_escape_string

答案 2 :(得分:-3)

如果要将所有值存储在单个数据库字段中,则需要内爆数组。

$all_names= implode(",", $name[]);

这会将所有数组值放入一个变量中,逗号分隔。