如何结合表单提交(PHP)中的多个数组?

如何结合表单提交(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)" 

请原谅我的语法,它是一个漫长的一天,我一直试图弄清楚这一点(我加上我是一个新手)。

+0

为什么他们必须在1个查询?数据库中的每一行应该是它自己的查询,也许在循环中是动态的。您可以将绑定参数循环到您的查询中,以便一次执行所有插入。你一定要使用准备好的语句。 – GrumpyCrouton

您需要找出您打算插入多少个值对,然后生成相应的数字。这是一个基本的例子(请不要正是因为这让你容易受到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; 

例子:https://eval.in/856592

你应该做的是使用类似上面生成的字符串与准备好的语句一起使用,例如:

foreach ($firstname as $index => $value) { 
    $value_array[] = sprintf('(?, ?)'); 
} 

然后在另一个循环中绑定适当的参数。这更安全。

了解更多关于准备的语句:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

甚至更​​好:http://php.net/manual/en/pdo.prepared-statements.php

+0

非常感谢你,作为一个新手,我没有深入地理解数组,并且完全没有使用sprintf()。我应该能够根据你奠定的基础去做一些事情,谢谢! – ddub74012