Php 如何将表单数组值插入MySQL?
我被卡住了,我想将数组字段中的表单数据插入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字
<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值是一个非常糟糕的主意,原因很多。你能为我指出一些阅读材料的正确方向吗?我经常看到这样做,我想了解它为什么不好,以及一种更好的存储值的方法,比如复选框数组。