我正在尝试通过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()*/);
}
}
}
答案 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()
永远不会获取任何内容!