2016-12-30 110 views
1

我不太确定这是否可能,或者是否有其他方法可以执行此操作。INSERT语句中的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函数,但我似乎无法得到它的INSERT语句和研究,我发现它并没有真正与插入的工作只与选择的工作。那么有没有什么办法来整理这个混乱?

这里是我的GROUP_CONCAT尝试(显然,这是我收到一个很大的错误)

$query = "INSERT INTO testing(item) VALUES(GROUP_CONCAT($test[$a]))"; 

PS我知道这完全是针对规范化标准,但我这样做,因为客户要求的吧..

+2

它们串联在PHP –

+1

不要在生产代码中使用的mysql_query。这个API已被弃用,多年来没有安全修复。 PDO和mysqli已经有十年了。使用这个旧代码没有任何借口。 – miken32

回答

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替代

+1

@FaresShawa很高兴我可以帮忙,但要小心mysql已弃用使用mysqli代替 –

+0

我正在使用PDO的过程中,我在这里使用的是mysql,因为我几乎完成了这个项目。所以未来的项目全部PDO –

+0

@ FaresShawa很好听 –