如何结合表单提交(PHP)中的多个数组?
问题描述:
我有一个表单提交多个条目,并且需要能够将这些条目合并到一个SQL语句中。当提交按钮被点击,“名字”,“姓氏”等获得投入自己的阵列,所以我有这样的事情:如何结合表单提交(PHP)中的多个数组?
$firstname = array(
'1' => john,
'2' => mike,
'3' => pete
);
$lastname = array(
'1' => smith,
'2' => jones,
'3' => ross
);
我想结合这些具有的
输出“约翰·史密斯,麦克·琼斯,皮特·罗斯”(可能是第三组?),这样我可以做一个SQLSRV查询像
"INSERT INTO database_table
(firstname, lastname)
Values ($firstnames, $lastnames)"
请原谅我的语法,它是一个漫长的一天,我一直试图弄清楚这一点(我加上我是一个新手)。
答
您需要找出您打算插入多少个值对,然后生成相应的数字。这是一个基本的例子(请不要正是因为这让你容易受到SQL注入使用):
$firstname = array(
'1' => john,
'2' => mike,
'3' => pete
);
$lastname = array(
'1' => smith,
'2' => jones,
'3' => ross
);
$query = '
INSERT INTO database_table (firstname, lastname)
VALUES
';
$value_array = array();
foreach ($firstname as $index => $value) {
$value_array[] = sprintf('("%s","%s")', $value, $lastname[$index]);
}
$query .= implode(', ', $value_array);
echo $query;
你应该做的是使用类似上面生成的字符串与准备好的语句一起使用,例如:
foreach ($firstname as $index => $value) {
$value_array[] = sprintf('(?, ?)');
}
然后在另一个循环中绑定适当的参数。这更安全。
了解更多关于准备的语句:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
+0
非常感谢你,作为一个新手,我没有深入地理解数组,并且完全没有使用sprintf()。我应该能够根据你奠定的基础去做一些事情,谢谢! – ddub74012
为什么他们必须在1个查询?数据库中的每一行应该是它自己的查询,也许在循环中是动态的。您可以将绑定参数循环到您的查询中,以便一次执行所有插入。你一定要使用准备好的语句。 – GrumpyCrouton