我有获取多个数组的PHP代码:
<?php
$checkKey = $_POST['key'];
if ($key === $checkKey)
{
$a = array_values($_POST['a']);
$b = array_values($_POST['b']);
$c = array_values($_POST['c']);
$d = array_values($_POST['d']);
if ( (count($a) !== count($b)) || (count($a) !== count($c)) || (count($a) !== count($d)) )
{
die ('Not enough parameters!');
}
else
{
}
}
?>
我想迭代所有数组,构建一个SQL INSERT查询,如下所示:
INSERT INTO xyz (a,b,c,d) VALUES (1,2,3,4), (4, 5, 6, 7);
值存储在每个数组中(即在此示例中a包含值1和4,b包含值2和5等)
我怎样才能做到这一点?
答案 0 :(得分:1)
只需使用for()
循环来迭代从0
到count($a)
的索引(您可以使用任何数组,它们检查的大小相同)。
$sql = 'insert into xyz (a, b, c, d) values ';
for ($i = 0, $l = count($a); $i < $l; ++$i) {
$sql .= "('".
// it's really important to escape the input!
mysqli_real_escape_string($link, $a[$i]).','.
mysqli_real_escape_string($link, $b[$i]).','.
mysqli_real_escape_string($link, $c[$i]).','.
mysqli_real_escape_string($link, $d[$i]).
"'), ";
}
$sql = substr($sql, 0, -2); // trim down the last ', '
答案 1 :(得分:1)
使用它:
function transpose($array) {
array_unshift($array, null);
return call_user_func_array('array_map', $array);
}
//example
$a=array(1,3);
$b=array(2,4);
$c=array(5,4);
$d=array(10,12);
$r= transpose(array($a,$b,$c,$d));
$sql='INSERT INTO xyz (a,b,c,d) VALUES ';
foreach($r as $values){
$sql.='('.implode(',',$values).'),';
}
$sql=rtrim($sql,',');
echo $sql;
答案 2 :(得分:0)
我认为没有内置的php功能,所以你可以这样做:
<?PHP
$count = count($a);
$sqlout = 'INSERT INTO xyz (a,b,c,d) VALUES ';
for($i=0; $i<$count; $i++)
{
$sqlout .= ( $i>0 ? ',' : '') . '('. $a[$i] .', '. $b[$i] .', '. $c[$i] .', '. $d[$i] .') ';
}
?>
并确保转义输入以避免SQL注入!
答案 3 :(得分:0)
简单循环
<?php
$checkKey = $_POST['key'];
if ($key === $checkKey)
{
$a = array_values($_POST['a']);
$b = array_values($_POST['b']);
$c = array_values($_POST['c']);
$d = array_values($_POST['d']);
if ( (count($a) !== count($b)) || (count($a) !== count($c)) || (count($a) !== count($d)) )
{
die ('Not enough parameters!');
}
else
{
$sql_array = array();
foreach($a AS $key=>$values)
{
$sql_array[] = "(".(int)$a[$key].",".(int)$b[$key].",".(int)$c[$key].",".(int)$d[$key].")";
}
if (count($sql_array) > 0)
{
$sql = "INSERT INTO xyz (a,b,c,d) VALUES ".implode(",", $sql_array);
// Execute it here
}
}
}
?>