如何合并来自表单提交的多个数组(PHP)?

How to combine multiple arrays from form submission (PHP)?

我有一个提交多个条目的表单,需要能够将这些条目组合成一个 SQL 语句。单击“提交”按钮后,"firstname"、"lastname" 等被放入它们自己的数组中,所以我有这样的东西:

$firstname = array(
'1' => john, 
'2' => mike,
'3' => pete
);

$lastname = array(
'1' => smith, 
'2' => jones,
'3' => ross
);

我想将这些组合起来得到

的输出

"John Smith, Mike Jones, Pete 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;

示例: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