php
  • mysql
  • database
  • 2016-04-24 14 views 0 likes 
    0

    軽量の請求システムを使用しており、完全に成功せずに正しく 'items'テーブルを更新しようとしています。PHPを使用してMYSQL UPDATEクエリでwhere句を2つ使用する

    請求書が保存されると、その購入者の当日までに購入されたアイテムを支払い済みとしてマークする必要があります。

    は今のところ、これは私のクエリです:

    $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

    あなたのデータモデルに欠陥があるの制限付きの例です。商品の販売と請求がありますが、商品間の接続はありません。

    お客様のために1日に請求書がある場合は、その顧客が購入したその日のすべての商品を正確にカバーする請求書でなければなりません。これはあなたが作っているようなルールです - データベースはこれをあなたに伝えません。

    売り上げ明細テーブルの請求書テーブルへの参照があります。請求書がシステムに入力されると、それに含まれるすべての商品にリンクする必要があります。したがって、更新は、支払われる売り手の商品ではなく、請求書であるため、容易であるか、または必要ではない。したがって、販売された商品には、支払い済みの列と支払い済みの列は含まれていないはずですが、請求書が必要です。

    更新日:ここでは、作業用データモデルの例を示します。各商品には、最初はnullである請求書番号があります。顧客が請求書をチェックアウトすると、請求書が書かれ、請求書番号のないすべての顧客の明細がこの新しい請求書番号を取得します。請求書の総額は、その項目の合計です。私。合計を重複して保存しません。

    auction_item

    • auction_item_no - 主キー
    • CUSTOMER_NO - nullでない
    • 説明 - nullでない
    • 価格 - nullでない
    • invoice_no - nullalble(nullの限りではありませんチェックアウト)

    送り状

    • invoice_no - 複合主キー部1
    • CUSTOMER_NO - 複合主キー部2
    • DATE_TIME - nullでない
    +0

    私はあなたの言うことを得ます。結局のところ、私がやろうとしていたことですが、データモデルの仕組み、特に顧客が購入したすべてのアイテムをどのように保存するのかを実際には理解できませんでした。顧客は1アイテムまたは300アイテムを購入することができます。 – DMort

    +0

    このプログラムはオークションサービスのためのもので、人々は最終的にアイテムの入札を行い、チェックアウト時には入札単価のすべてのアイテムを購入します。たぶん彼らは1回チェックアウトし、出発して戻って1回以上チェックアウトします。彼らがチェックアウトするたびに、彼らは支払われたとマークされていないすべての単一のアイテムを支払うことになります。この場合、データモデルは依然として恐ろしいのですか? – DMort

    +0

    私はそれが "恐ろしい"とは言っていません:-)しかし、依然としてあなたのデータベースに請求書があるか、明示的に支払われた請求書と暗黙的にその項目のみが使われているか、単に商品をチェックアウト時に支払うとマークします。アイテムに接続されている請求書のデータモデルを変更する方法については、各item_soldにはinvoice_idがあります。 –

    1

    は、ORDER BYと

    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

    順序で更新をサポート、例のおかげで。私は2つの句がANDで区切られていたときに、ページ上でエラーが発生しました。 '予期しない節:prepStatus = 0 on line blah blah blah'のようなもの 別のものを変更する必要はありますか? – DMort

    +0

    モデルやショッピングカートなどで作業する必要があります。また、文字列を連結するのが好きでない限り、パラメータバインディングを使用してmysqliを撮影します(http://php.net/manual/en/mysqli-stmt)。 .bind-param.php – Drew

    関連する問題