2011-06-04 4 views
0

Il est seulement me permet de mettre à jour pour un total de 2MySQL clé en double mise à jour

Heres ma table

CREATE TABLE `cart` (
    `id` int(7) NOT NULL AUTO_INCREMENT, 
    `User` int(7) DEFAULT NULL, 
    `Product` varchar(100) DEFAULT NULL, 
    `Quantity` int(7) DEFAULT NULL, 
    UNIQUE KEY `id` (`id`), 
    UNIQUE KEY `Quantity` (`Quantity`) 
) 

Ensuite, mon code pour insérer les données:

$a = '1' 

query2 = "  INSERT INTO CART(User, Product,Quantity) 
       VALUES 
       ('$id','$model_number','$a') 
       ON DUPLICATE KEY UPDATE Quantity=Quantity+1"; 

Cela fonctionnera lorsque j'ajouterai les données à la base de données mais, lors de ma deuxième tentative, j'obtiens cette erreur:

Duplicate entry '2' for key 'Quantity' 

Répondre

2

Vous ne voulez probablement pas cette ligne:

UNIQUE KEY `Quantity` (`Quantity`) 

Cela crée une contrainte unique sur le champ de quantité, ce qui est la raison pour laquelle votre deuxième insert échoue. Je ne peux pas penser à une raison pour laquelle vous voudriez cela.

P.S. Si vous supprimez cette ligne, veillez à supprimer la virgule (,) de la ligne précédente.

+0

La dernière déclaration était-elle une blague? C'est extrêmement évident –

+0

@RPM Vous seriez surpris de ce qui n'est pas évident pour beaucoup de gens. – dkamins

+0

Ou utilisez supprimer la partie 'UNIQUE' si vous voulez toujours faire des recherches rapides par quantité. –

Questions connexes