3

この更新手順を単純化するにはどうすればよいですか?クライアントがアイテムを購入するたびに、売り上げが1に更新されます。

$this->db->query('SELECT amount FROM shop_items WHERE itemid='.$itemid.'');   
$new_amount = $item->amount+1;
    if(!$this->db->query('UPDATE shop_items SET amount='.$new_amount.' WHERE itemid='.$itemid.'')):
    return false;
    endif;

行を少なくするために、もっと単純にすることはできません。たとえば、次のようになります。

if(!$this->db->query('UPDATE shop_items SET amount=_current_value_+1 WHERE itemid='.$itemid.'')):
return false;
endif;

これは可能ですか?とにかく感謝しないなら

4

1 に答える 1

6

次のSQLクエリを使用するのはどうですか。

update shop_items
set amount = amount + 1
where itemid = 123

基本的に、1つのSQLクエリでamount、以前の値に1を加えた値に設定します。
2つのクエリは必要ありません;-)


これをPHPコードに統合すると、次のようになります。

if (!$this->db->query('UPDATE shop_items SET amount=amount+1 WHERE itemid='.$itemid.'')) :
    return false;
endif;

注:_current_value_作業中のフィールドの名前に置き換えました:amount

于 2010-04-24T13:45:21.913 に答える