2016-04-24 80 views
0

使用輕量級帳單系統,並試圖正確更新我的'items'表,但沒有完全成功。在PHP中使用MYSQL UPDATE查詢中的兩個where子句

一旦保存了發票,我需要將這些項目標記爲當天爲該買家購買的已付款項。

現在這是我的查詢:

$markitemspaidquery = "UPDATE solditems SET paidstatus='paid', paidtime='$date' WHERE buyerid='$buyer_id'"; 

這將更新爲正確買家的記錄,但問題是它會在表「支付」是買方標註每一個項目;即使它是從3天前。

我該如何使用像這樣的查詢類型或實現這種影響?

$markitemspaidquery = "UPDATE solditems SET paidstatus='paid', paidtime='$date' WHERE buyerid='$buyer_id' AND DATE(timesold)=CURDATE() AND paidstatus='unpaid'";

在所有的現實,一切都應該由一天結束反正支付的,因爲該公司的工作方式,但我想知道,以供將來參考,因爲它只是使用了不必要的資源更新每個項目的買方。

+0

MySQL的由支持更新順序和限制 – Drew

回答

0

。在你的數據模型的一個缺陷。您有售出的物品和發票,但它們之間沒有任何關聯。

所以你糊弄你的方式說:當客戶每天有一張發票時,它必須是一張發票,該發票正好涵蓋該客戶當天購買的所有物品。這是一個你有點彌補的規則 - 數據庫不會告訴你這一點。

因此,在銷售商品表中的發票表中有一個參考。一旦在系統中輸入發票,它必須鏈接到它包括的所有銷售物品。因此,更新很容易,或者更好不必要,因爲它不是所支付的銷售單件,而是發票。所以出售的物品不應該有列付費狀態和付款時間,但發票應該。

更新:以下是工作數據模型的示例。每件物品都有一個首先爲空的發票號碼。一旦客戶簽出發票,並且沒有發票號碼的所有客戶的物品都將獲得這個新的發票號碼。發票的總金額是其項目的總和。即您不會重複存儲總和。

auction_item

  • auction_item_no - 主鍵
  • CUSTOMER_NO - 不爲空
  • 描述 - 不爲空
  • 價格 - 不爲空
  • invoice_no - nullalble(空只要不是檢出)

發票

  • invoice_no - 複合主鍵部1個
  • CUSTOMER_NO - 複合主鍵部分2
  • DATE_TIME - 不爲空
+0

我明白你的意思了。最終,你所說的是我計劃要做的事情,但我無法弄清楚我的數據模型應該是怎樣的,特別是我如何保存客戶購買的所有項目。顧客可以購買1件或300件商品。 – DMort

+0

該計劃是針對拍賣服務的,因此人們最終會對物品進行出價,而當他們結賬時,他們將購買他們出價的每件物品,無論如何。也許他們會退出1次,離開,然後回來再看1次;但每次他們退房時,他們都會爲沒有標記爲付費的每件商品付款。在這種情況下數據模型仍然非常可怕嗎? – DMort

+0

我不認爲它是「可怕的」:-)但是,無論您是否在數據庫中有發票,他們都應該與項目有關聯(發票明確支付並且只隱含其項目),或者您不要那麼只需在結帳時將項目標記爲已付款即可。至於如何更改連接到物品的發票的數據模型:每個item_sold都有一個invoice_id。 –

1

這裏是爲了用一個例子,限制

update questions 
set prepStatus=1,status_bef_change=status,cv_bef_change=closeVotes,max_cv_reached=greatest(max_cv_reached,closeVotes) 
where status='O' and prepStatus = 0 
order by qId desc 
limit 900; 
+0

德魯,謝謝你的例子。當我有兩個由AND隔開的子句時,頁面上出現錯誤。類似於'unexpected clause:prepStatus = 0 on line blah blah blah' 我需要改變別的東西嗎? – DMort

+0

你將需要在模型,購物車等上工作。另外,除非你喜歡串聯字符串(以及誰),用參數綁定拍攝mysqli http://php.net/manual/en/mysqli-stmt .bind-param.php – Drew