MySQL / PHP satır varsa güncellemek ya da başka kontrol etmek kolon özgü değilken eklemek için

4 Cevap php

Ben yaklaşık DEĞİŞTİR ve YİNELENEN anahtar sorguları ON INSERT, ve ben onlar kadar yararlı görebilirsiniz sırasında, onlar benim amaçlar için çalışmak görünmüyor okudum. Belki benim veritabanı tasarımı kapalı nasıl olmalıdır olduğunu, ama her iki durumda da ben bu çalışma alabilirsiniz umuyoruz.

Kendimi MySQL ve PHP öğretmek için bir online mağaza alay etmeye çalışıyorum, ve ben tek bir ziyaret için geri bireyin sepeti çekerek ve ben bir sorun yaşıyorum sepetinize envanter yazma girişiminde kullanılmak üzere bir oturum kimliğini kaydediyorum madde sepeti olup olmadığını kontrol etmek için çalışıyor olduğunu. Ben olmaz, ancak tüm tablo için benzersiz olmamalı, yoksa bu aynı madde satın alma birden fazla kullanıcı önleyecek, her öğe kullanıcı başına benzersiz olmak istiyorum?

Benim tablo şimdiye kadar bu gibi görünüyor:

 | Cart ID(key) | USER_ID(fk) | ItemNum | ItemQTY |

ve ben aslında bir USER_ID zaten kendi arabası ItemNum arasında> 0 ItemQTY olup olmadığını görmek istiyorum. Onlar yoksa ben itemQTY itemQTY + onlar eklemek, ancak birçok güncellemek istiyorum, ve değilse, o zaman yeni bir satır eklemek.

Ben bunu yapmak için yazmadan önce sorgulamak zorunda mı?

4 Cevap

Geleneksel alışveriş sepeti yazılım kullanıcı başına bir arabası vardır, ve bu sepeti, her seferinde kullanıcı döner geri. Eğer hem CartID ve UserID Çünkü, bu bir kullanıcının birden arabaları var mümkün olduğu izlenimi verir.

Oysa, bu üç tablo için daha iyi olabilir; Users, Carts ve CartItems

Users gereken bir UserID, Carts CartID ve OwnerID ([{referans (5 gibi bir şey gerekir )]}) ve CartItems CartID ([(8)]}), ItemID ve Quantity {referans olacaktır.

Kullanıcı sadece hiç bir Cart olacak beri bile, basit alabilir, tamamen sepeti tabloyu görmezden ve CartItems.CartID CartItems.OwnerID (başvuran Users.UserID ile değiştirin.

Bu yararlı olduğunu umuyoruz.

Yeni başlayanlar için ... Ben sadece orada olup olmadığını kontrol etmek sorguyu çalıştırmak için muhtemelen sorun olduğunu düşünüyorum. Genellikle php ve mysql ile daha aşina olduğunuzda Ardından, bilginizi oluşturmaya başlayabilirsiniz.

Diğerleri katılmıyorum, ancak yeni dil öğrenme sırasında ben onları yapmadan önce işlerin yapmak istiyorum "mükemmel."

Bir saklı yordam yazmak ve ekler işlemek için saklı yordamı kullanabilirsiniz.

Saklı yordamlar yazma ve PHP onları yürütme hakkında bilgi edinmek gerekir.

Ayrıca, saklı yordam içindeki birden fazla sorguyu yürütmek gerekir, ancak uygulama için bu işlem tek bir çağrı gibi görünecek.

HTH.

Ben CartID ve ItemNum üzerinde bir çok sütun benzersiz bir anahtar gerektiğini düşünüyorum:

alter table my_table add unique( CartID, ItemNumber );

Sonra yapabilirsiniz:

insert into my_table values( 1, 'joe', 12345, 1 ) on duplicate key update ItemQTY = ItemQTY + 1;