INSERT语句中的GROUP_CONCAT

时间:2016-12-30 18:42:58

标签: php mysql group-concat

我不确定这是否可行,或者是否有其他方法可以做到这一点。

以下代码从用户那里获取多个输入并将它们插入不同的行中,我不希望这样。我正在寻找一种方法将它们插入同一行。

<?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我知道这完全违反了标准化标准,但我这样做是因为客户要求它..

1 个答案:

答案 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