2010-01-21 5 views
0

Ce que j'essaie de faire est d'ajouter des données pour un produit dans une base de données avec MySQL 5.1 et PHP 5.2.12.Comment ajouter des données à différentes tables mais conserver le même identifiant?

J'ai un tableau pour les champs généraux: nom, description, prix, nombre de fois achetés, et aussi j'ai une table pour les images qui sont associées à ce produit.

L'objectif est d'avoir le même identifiant pour chaque image qui correspond à son produit. Par exemple, si j'ajoute le produit à la table principale et que son ID est défini sur 128, toutes les images de la table d'images doivent avoir l'ID 128.

Comment faire?

Répondre

2

Vous souhaitez utiliser mysql_insert_id(); pour récupérer l'ID numéroté de ce que vous venez d'insérer. Vous devrez ensuite utiliser cet ID dans une table de liens qui lie les images aux produits.

1

Créez une nouvelle clé primaire pour vos images (un champ d'incrémentation automatique par exemple) mais utilisez également une clé étrangère pour référencer la table des produits. Insérer comme suit:

INSERT INTO Images (product_id, ....) VALUES (128, ...) 
+0

D'où puis-je obtenir le 128? Je ne connais pas l'ID du produit au moment de la requête car j'insère null et il s'incrémente automatiquement. Comment savoir quelle valeur utiliser pour product_id? [Répondu par MindStalker] – Atomix

0

L'image doit avoir une carte d'identité propre, tout à fait indépendante du produit (probablement auto-incrément) il est associé.

L'association au produit doit être définie dans une colonne séparée (nommée "product_id").

Ceci ne fonctionne que si une image ne peut être associée qu'à un seul produit. Si une image peut avoir plusieurs associations, il vaut la peine de créer une association table comme si:

id | image_id | product_id 

cette façon, toute image peut être associée à un certain nombre de produits, ce qui pourrait réduire les frais généraux.

0

Créez une troisième table appelée ProductImage.

ID, ProductID, ImageID

Utilisez ce tableau pour stocker la relation. Vous n'avez pas vraiment besoin de l'ID dans cette table, mais vous pourriez trouver une utilisation pour l'ID à un stade ultérieur. ProductImageID est un identifiant unique pour ce produit/cette image.

Ceci permet à chaque image de représenter plus d'un produit.

Questions connexes