2011-09-19 4 views
0

Comment insérer des données dans deux tables ou plus?Problème avec PHP/MySQL Insérer

Actuellement j'utilise cette astuce. (Supposons juste que la syntaxe est correcte)

$Sql1 = "insert into user"; 
$Sql2 = "insert into files"; 
$Sql3 = "insert into messages"; 

query $Sql1 
query $$ql2 
query $Sql3 

Donc je l'utilise et j'ai besoin d'optimiser.

Aussi, je pense que je dois utiliser la clé étrangère? Mais je ne sais pas comment le faire sur phpmyadmin.

et enfin:

C'est tout ce que je veux. Pour insérer des données sur la table "user" puis automatiquement la table "messages" et "files" aura aussi un identifiant qui est le même avec l'utilisateur .. C'est pourquoi j'utilise 3 requêtes dans mon code.

S'il vous plaît aidez-moi.

Merci à ADVANCE!

myb

+3

Pourquoi avez-vous besoin d'optimiser cela? Les trois requêtes posent-elles un problème de performances * réel *? –

Répondre

3

Il est parfaitement possible d'utiliser plusieurs requêtes.

Cependant, vous devez envelopper les 3 requêtes en une seule transaction. En d'autres termes, si une requête échoue pour pour une raison quelconque, les effets de toutes les requêtes précédentes (le cas échéant) peuvent être annulés afin que votre base de données reste dans un état cohérent.

Remarque: Les transactions ne sont pas possibles avec les tables MyISAM de MySQL. De plus, vous devez utiliser les codes Mysqli (ou PDO) de PHP pour pouvoir utiliser les transactions. (Je suppose que vous êtes pas en utilisant une couche d'abstraction de base de données de haut niveau.)

Quant à votre question concernant clés étrangères: Pour autant que je sache, il ne fait aucune différence lorsque vous utilisez le moteur MyISAM pour les tables de votre base de données (ce que je suppose), car MyISAM ne supporte même pas la modélisation explicite des clés étrangères. Cependant, d'autres moteurs de tables comme InnoDB peuvent utiliser des clés étrangères pour vérifier certaines contraintes comme "un message doit toujours être associé à une personne existante".

Voici quelques exemples de belles concernant les clés étrangères: http://www.postgresql.org/files/documentation/books/aw_pgsql/node131.html