为什么我的While块无法运行


Why my While block can not be Run

我尝试用这段代码从数据库中提取记录,但我的while块云没有响应我。我回显我的查询,它会完美打印,但当复制查询运行我的服务器时,它不会返回值。由于忽略While块,此代码生成了错误"Undefined variable:json"。感谢Adv

<?php
    require "db_config.php";
    $cus_name="R M PLASTICES";
    if(isset($cus_name) && $cus_name!=NULL && $cus_name!="")
    {
        $sql="select Vo.Cus_Name,Vo.vendorid,Vo.Created_date,vm.raw_mat as MATERIAL,vm.uom as UOM,vm.qty as ORDERQTY,vm.qtyin as RECDQTY,convert(decimal(7,3),sum(vm.qty-vm.qtyin)) as BALQTY from mmsuser.vendor_mat vm inner join mmsuser.vendor_order vo on vm.vendorid=vo.vendorid where Vo.Cus_Name='".$cus_name."'group by vm.Raw_mat,vm.qty,vm.uom,vm.qtyin,Vo.Cus_Name,Vo.vendorid,vm.id,Vo.Created_date having sum(vm.qty-vm.qtyin) > 0 order by vm.raw_mat";
    }
    $stmt=sqlsrv_query($conn, $sql);
    if($stmt===false) 
    {
        die(print_r(sqlsrv_errors(),true));
    }
    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
    {
      $json['purchase_pending_repo'][]=$row;
    }
    sqlsrv_free_stmt($stmt);
    echo json_encode($json);
    sqlsrv_close($conn);  
?>

您试图在第二维度的数组中附加数据,甚至没有首先初始化数组。

首先,您需要初始化$json数组变量,其次,您需要在$json['purchase_pending_repo']中初始化第二个数组。

<?php
    require "db_config.php";
    $cus_name="R M PLASTICES";
    if(isset($cus_name) && $cus_name!=NULL && $cus_name!="")
    {
        $sql="select Vo.Cus_Name,Vo.vendorid,Vo.Created_date,vm.raw_mat as MATERIAL,vm.uom as UOM,vm.qty as ORDERQTY,vm.qtyin as RECDQTY,convert(decimal(7,3),sum(vm.qty-vm.qtyin)) as BALQTY from mmsuser.vendor_mat vm inner join mmsuser.vendor_order vo on vm.vendorid=vo.vendorid where Vo.Cus_Name='".$cus_name."'group by vm.Raw_mat,vm.qty,vm.uom,vm.qtyin,Vo.Cus_Name,Vo.vendorid,vm.id,Vo.Created_date having sum(vm.qty-vm.qtyin) > 0 order by vm.raw_mat";
    }
    $stmt=sqlsrv_query($conn, $sql);
    if($stmt===false) 
    {
        die(print_r(sqlsrv_errors(),true));
    }
    $json = array('purchase_pending_repo' => array()); //OR $json = ['purchase_pending_repo'=>[]]
    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
    {
      $json['purchase_pending_repo'][]=$row;
    }
    sqlsrv_free_stmt($stmt);
    echo json_encode($json);
    sqlsrv_close($conn);  
?>