我目前正在构建一个每月处理一次客户帐户的支付模块。我有一个查询,它获取给定月份的所有客户付款项目,对金额求和,然后将数据发送到支付网关。这很好用,我收到银行的回复确认是或否。如果是,那么我需要使用发票编号更新请求中的所有项目。我正在使用 while 循环获得总和,这是在发送请求之前执行的。网关只能处理一个请求,我不想为每个请求循环遍历每个发票项目,我宁愿对所有未完成的发票项目执行一个请求。
一些代码是:
$get_payment_items_query = mysql_query("SELECT * FROM tbl_invoice_item WHERE billing_cycle = date");
while($get_payment_items_result = mysql_fetch_assoc($get_payment_items_query)){
$invoice_amount = $invoice_amount + $get_payment_items_result['payment_amount'];
}
然后稍后在我从银行收到回复后,我将记录添加到发票表并获取发票 ID,然后执行以下操作:
$update_payment_item_query = mysql_query("UPDATE tbl_invoice_item SET status = '" . PAYMENTCOMPLETE . "', invoice_id = '$invoice_id' WHERE invoice_item_id = '" . $get_payment_items_result['invoice_item_id'] . "'");
这只会更新一条记录,因为更新查询在 while 循环之外。我知道有一种方法可以将记录标识符存储在字符串/数组中并执行单个更新查询,但我真的不知道此类名称的名称,因此无法找到示例。
我希望这是有道理的,但这里有更多细节。
有 5 个项目准备开票。我得到了 5 个项目的总金额。然后,我向支付网关发出一个请求,以收取 5 件商品的费用。银行回复是或否。如果是,我会为付款生成一个发票 ID。然后,我需要使用新创建的发票 ID 更新这 5 个项目。在单个查询中更新 5 个项目是我卡住的地方。
提前致谢。