简体   繁体   English

Foreach PHP仅在数据库中插入最后一项

[英]Foreach PHP only inserts last item in db

i allready found some answers at other topics but not a working answer for my situation. 我已经找到其他主题的一些答案,但没有找到适合我情况的答案。 I'm having some troubles with inserting elements of an array into my DB. 我在将数组元素插入数据库中时遇到一些麻烦。 (SQL Server). (SQL Server)。 When using a foreach loop in PHP the loop only inserts last element of the array into db, but when i printr($arrayname) it shows the correct both elements. 当在PHP中使用foreach循环时,该循环仅将数组的最后一个元素插入db,但是当我printr($arrayname)它会显示正确的两个元素。

Here's some of the code. 这是一些代码。

First i do a select to assign some variables: (the subquery is for removing ',' in the select) 首先,我进行选择以分配一些变量:(子查询用于删除选择中的“,”)

$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'];

        }
    }

So far so good, did an echo on the $variable to test if it prints both row records, and it did. 到目前为止,一切都很好,对$variable做了回显以测试它是否同时打印了两个行记录。

Than i do the 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 ));
}

Here's where it goes wrong, again i did a print($id) to test and see the values. 这是哪里出错了,我再次执行了print($id)来测试并查看值。 It prints both values but only inserts the last element ( $variablename ) of array $id . 它输出两个值,但仅插入数组$id的最后一个元素( $variablename )。

Please, what am i doing wrong? 拜托,我在做什么错?

Cheers. 干杯。

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


 }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM