php - mssql_fetch_array

时间:2012-01-21 00:10:48

标签: php sql

我正在尝试通过PHP更新MSSQL数据库,如以下代码所示。问题是前5行代码被成功执行但程序没有进入while循环。我确信数组$ items包含记录。

function updateOrder($items, $cardNo){
    if($items){
        $orderid = generateGuid();
        $username = $_SESSION['username'];

        $query = "INSERT INTO Orders (OrderId, OrderDate, OrderStatus, OrderCardNo, OrderDiscount, OrderVatRate, CustomerUsername) ";
        $query .= " VALUES ('".mssql_guid_string($orderid)."',".date('Y-m-d').", 'PE', '$cardNo', 0, 0.18, '$username')";
        $result = mssql_query($query) or die("Unable to place order"/*mssql_get_last_message()*/);


        while($row = mssql_fetch_array( $items )){
            $tmpId = generateGuid();
            $tmpPrice = getUserPrice($username, $row["ProductId"]);

            $query = "INSERT INTO Orders_Details (OrderDetailsId, ProductPrice, Qty, OrderId, ProductId)";
            $query .= "VALUES ('".mssql_guid_string($tmpId)."', $tmpPrice, '".$row["Qty"]."', '".mssql_guid_string($orderid)."', 0, 0.18, '".$row["ProductId"]."')";

            echo($query);
            $result = mssql_query($query) or die("Unable to place order"/*mssql_get_last_message()*/);
        }
    }
}

5 个答案:

答案 0 :(得分:0)

mssql_fetch_array接受一个mssql_query返回的参数:http://php.net/manual/en/function.mssql-fetch-array.php。什么是$items

答案 1 :(得分:0)

while($row = mssql_fetch_array( $items ))中有$ item的内容,或者它没有任何价值,或者您在$items

中发错了

如果项目具有任何值,例如商品ID,则运行选择查询以选择ID为$items的商品,并使用mssql_query中的mssql_fetch_array返回

答案 2 :(得分:0)

可能是日期应该被转义吗?

代码:

 $query = "INSERT INTO Orders (OrderId, OrderDate, OrderStatus, OrderCardNo, OrderDiscount, OrderVatRate, CustomerUsername) ";
 $query .= " VALUES ('".mssql_guid_string($orderid)."',".date('Y-m-d').", 'PE', '$cardNo', 0, 0.18, '$username')";

$ query可能如下所示:

INSERT INTO Orders (OrderId, OrderDate, OrderStatus, OrderCardNo, OrderDiscount,
   OrderVatRate, CustomerUsername) 
   VALUES ('100',2012-1-20,'PE','10', 0, 0.18, 'username')

答案 3 :(得分:0)

我通过将2个UPDATE操作分成两个不同的方法并调用填充$ items两次的方法来解决问题。

答案 4 :(得分:-1)

while($row = mssql_fetch_array( $items ))之前的最后一个查询是INSERT,因此mssql_fetch_array()永远不会获取任何内容!