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

Php 如何将表单数组值插入MySQL?,php,mysql,post,Php,Mysql,Post,我被卡住了,我想将数组字段中的表单数据插入MySQL,如下所示: <input type='text' name='name[]' />` and `<input type='text' name='url[]' /> 但是在我的表单中,我同时拥有和如何才能使其正常工作?如果要将所有值存储在单个DB字段中,则需要对数组进行内爆 $all_names= implode(",", $name[]); 这将把所有数组值放在一个逗号分隔的变量中。如果要将所有值存储在单个DB字

我被卡住了,我想将数组字段中的表单数据插入MySQL,如下所示:

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

但是在我的表单中,我同时拥有
如何才能使其正常工作?

如果要将所有值存储在单个DB字段中,则需要对数组进行内爆

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

这将把所有数组值放在一个逗号分隔的变量中。

如果要将所有值存储在单个DB字段中,则需要对数组进行内爆

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

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

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

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);
} 

当然,在将值添加到查询中之前使用这些值是一种很好的做法。

您可以使用循环的索引器,如下所示:

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);
} 

当然,在将值添加到查询中之前使用这些值是一种很好的做法。

我会尽量避免反复查询数据库,而只是将所有内容放在一个大的insert语句中:

$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等),则所有插入都发生在单个事务中

我会尽量避免反复查询数据库,而只是将所有内容放在一个大的insert语句中:

$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等),则所有插入都发生在单个事务中

foreach($_POST['url']as$url){echo$url;}请将您的表模式包括在内($_POST['url']as$url){echo$url;}请将您的表模式-1包括在内,将CSV值存储在数据库中是一个非常糟糕的主意,原因很多。您能为我指出一些阅读材料的正确方向吗?我经常看到这样做,我想了解为什么它不好,以及一种更好的存储值的方法,比如复选框数组。-1,在数据库中存储CSV值是一个非常糟糕的主意,原因很多。你能为我指出一些阅读材料的正确方向吗?我经常看到这样做,我想了解它为什么不好,以及一种更好的存储值的方法,比如复选框数组。