对于每个 PHP 只插入 db 中的最后一项


Foreach PHP only inserts last item in db

我准备好在其他主题中找到了一些答案,但不是适合我的情况的工作答案。我在将数组元素插入数据库时遇到了一些麻烦。(SQL Server)。在 PHP 中使用 foreach 循环时,循环仅将数组的最后一个元素插入到 db 中,但当我printr($arrayname)时,它显示了正确的两个元素。

下面是一些代码。

首先,我做一个选择来分配一些变量: (子查询用于删除选择中的'","')

$sql="SELECT ... FROM ...";
$query = sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
foreach($_SESSION['cart'] as $id => $value) { 
$sql.=$id.","; 
 }         
$sql=substr($sql, 0, -1).")"; 
     if ($query){
         while($row = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {
         $variable=$row['rowname'];
        }
    }

到目前为止一切顺利,在$variable上做了回声以测试它是否打印了两行记录,它确实如此。

比我做插入:

foreach($_SESSION['cart'] as $id => $value) { 
print_r($id);
$sql="INSERT INTO() ... VALUES ('$value')";
    $query= sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
}

这就是它出错的地方,我再次做了一个print($id)来测试并查看值。它打印两个值,但只插入数组$id的最后一个元素($variablename)。

拜托,我做错了什么?

干杯。

foreach($_SESSION['cart'] as $id => $value) { 
$sql.=$id.","; 
  }         
$sql=substr($sql, 0, -1).")"; 
$query = sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
    if ($query){
     while($row = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {
     $variable=$row['rowname'];
     $sql2="INSERT INTO ()";
     $stmt= sqlsrv_query( $conn, $sql2, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));

 }
}