我不确定这是否可行,或者是否有其他方法可以做到这一点。
以下代码从用户那里获取多个输入并将它们插入不同的行中,我不希望这样。我正在寻找一种方法将它们插入同一行。
<?php $test=$_POST['test'];
foreach ($test as $a => $b){?>
<?php echo $test[$a];?>
<?php
if( !$error ) {
$query = "INSERT INTO test_tbl(test) VALUES('$test[$a]')";
$output = mysql_query($query);
if ($output) {
$errTyp = "success";
$errMSG = "Update Posted";
?>
我知道有一个GROUP_CONCAT函数,但我似乎无法在插入语句中使用它,而且从研究中我发现它并不适用于仅使用select的insert。那么有什么办法可以整理这个烂摊子吗?
以下是我对GROUP_CONCAT的尝试(显然这是我收到的一个大错误)
$query = "INSERT INTO testing(item) VALUES(GROUP_CONCAT($test[$a]))";
PS我知道这完全违反了标准化标准,但我这样做是因为客户要求它..
答案 0 :(得分:2)
如果我理解你正在插入一个foreach循环,这将在每次循环运行时单独插入每个$ test [$ a]。或者,您可以将所有$ test [$ a]值放在一个数组中,然后将该数组插入一行(这比多个插入查询更快)。
这是一种方法:
$all_test_values = array();
foreach ($test as $a => $b){
$all_test_values[] = $test[$a];
}
$comma_separated = implode(",", $all_test_values);
if( !$error ) {
$query = "INSERT INTO test_tbl(test) VALUES('$comma_separated')";
$output = mysql_query($query);
}
PS:mysql很糟糕,而不是使用mysqli