【问题标题】:Foreach PHP only inserts last item in dbForeach PHP 仅在 db 中插入最后一项
【发布时间】:2016-02-24 07:50:38
【问题描述】:

我已经在其他主题上找到了一些答案,但对于我的情况来说不是一个有效的答案。 我在将数组元素插入数据库时​​遇到了一些麻烦。 (SQL 服务器)。在 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) 来测试并查看值。 它打印两个值,但只插入数组 $id 的最后一个元素 ($variablename)。

请问,我做错了什么?

干杯。

【问题讨论】:

  • 在您的脚本中添加error_reporting(E_ALL);ini_set('display_errors',1);,在顶部<?php 之后并检查实际错误。请尝试一下
  • INSERT 必须在 while 循环内部,而不是外部,否则 $variable 将被分配循环中的最后一个值。
  • 你有错别字吗?您使用$sql2,但查询称为$sql,您使用$variablename,应该是$value
  • 也许问题是你将sql查询分配给$sql,但将$sql2传递给sqlsrv_query
  • @Anant error_reporting 已开启。虽然什么也没显示..

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


【解决方案1】:
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 ));


 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2019-02-01
    • 2023-03-14
    • 2022-01-10
    • 1970-01-01
    • 2013-01-07
    相关资源
    最近更新 更多