我有一个像这样的数组:
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];
}
}
对不起要求不好的解释或愚蠢的问题。感谢任何帮助和评论。
答案 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_function
或array($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;