GROUP_CONCAT 在 INSERT 语句中
GROUP_CONCAT inside an INSERT statement
我不太确定这是否可行,或者是否有其他方法可以做到这一点。
以下代码从用户那里获取多个输入并将它们插入不同的行,我不希望这样。我正在寻找一种将它们插入同一行的方法。
<?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 函数,但我似乎无法让它在插入语句中工作,并且通过研究我发现它实际上不适用于插入 [=28] =].那么有什么办法可以解决这个问题?
这是我对 GROUP_CONCAT 的尝试(显然这是我收到的一个大错误)
$query = "INSERT INTO testing(item) VALUES(GROUP_CONCAT($test[$a]))";
PS 我知道这完全违反规范化标准,但我这样做是因为客户要求它..
如果我理解正确,您是在 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 代替
我不太确定这是否可行,或者是否有其他方法可以做到这一点。
以下代码从用户那里获取多个输入并将它们插入不同的行,我不希望这样。我正在寻找一种将它们插入同一行的方法。
<?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 函数,但我似乎无法让它在插入语句中工作,并且通过研究我发现它实际上不适用于插入 [=28] =].那么有什么办法可以解决这个问题?
这是我对 GROUP_CONCAT 的尝试(显然这是我收到的一个大错误)
$query = "INSERT INTO testing(item) VALUES(GROUP_CONCAT($test[$a]))";
PS 我知道这完全违反规范化标准,但我这样做是因为客户要求它..
如果我理解正确,您是在 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 代替