插入选定数量的数组,然后继续其余部分

时间:2014-01-04 18:49:24

标签: php mysql arrays loops

我有一个像这样的数组:

array(098A,mike,Street17,LA,07AA,steve,Street14,LA); //could be more or less

是否可以只选择前4个数组并插入数据库,成功后它会将其余数据插入到数据库mysql中。例如,它会将(098A,mike,Street17,LA)插入数据库然后插入(07AA,史蒂夫,Street14,LA)。

我已经制作了一个PHP代码来接收来自AJAX的数据然后我不知道该怎么做。下面是我的代码:

if ($_POST['action'] == "checktransfertmp") {

   $arrCheckTrans = $_POST['arrCheckTrans'];

   $trans = explode(",", $arrCheckTrans);

   $length = count($trans);
   for ($i = 0; $i < $length; $i++) {
    print $trans[$i];
}


}

对不起要求不好的解释或愚蠢的问题。感谢任何帮助和评论。

2 个答案:

答案 0 :(得分:1)

您需要使用array_chunk

$chunks = array_chunk($trans, 4);
foreach ($chunks as $chunk) {
  // Build your insert string
}

要构建插入字符串(而不是进行多次查询),您可以执行以下操作:

$insertString  = 'INSERT INTO myTable(col1, col2, col3, col4) VALUES ';

foreach ($chunks as $chunk) {
    $insertString .= ' (' . implode(', ', array_map('escape_function', $chunk)) . ',';
}

$insertString = substr($insertString, 0, -1);
  • 请注意使用真实的转义函数,例如mysqli_real_escape_functionarray($pdoLink, 'escape')

答案 1 :(得分:1)

使用array_chunk将数组拆分为块,insert语句可以插入带有查询的多行,如下所示:

$output = array_chunk( $trans, 4 );
foreach ( $output as $key => $value ) {
    $output[$key] = '(' . implode( ',', $value ) . ')';
}

$query = 'INSERT INTO tbl_name (a,b,c,d) VALUES ' . implode( ',', $output );

// INSERT INTO tbl_name (a,b,c,d) VALUES (098A,mike,Street17,LA),(07AA,steve,Street14,LA) 
echo $query;