Foreach PHP只插入db中的最后一项

时间:2016-02-24 07:50:39

标签: php arrays sql-server foreach insert-into

我已经在其他主题上找到了一些答案,但对我的情况却没有找到合适的答案。 我在将数组元素插入数据库时​​遇到了一些麻烦。 (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上做了一个回音来测试它是否打印了两个行记录,而且确实如此。

比我执行INSERT:

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)测试并查看值。 它会打印两个值,但只插入数组$variablename的最后一个元素($id)。

拜托,我做错了什么?

干杯。

1 个答案:

答案 0 :(得分:0)

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 ));


 }
}