2009-07-06 11 views
0

Je crée un deux tables MySQL en PHP, en utilisant le code comme indiqué ci-dessous:Problème création d'une table de référence dans une base MySQL en utilisant php

$sql = "CREATE TABLE qotwMember 
(
MemberId NOT NULL PRIMARY KEY, 
Name varchar(255), 
Passwork varchar(255), 
emailId varchar(255), 
)"; 


$sql = "CREATE TABLE qotwQuestion1111 
(
QuestionId NOT NULL AUTO_INCREMENT, 
Question varchar(5000), 
MemberId varchar(255) FOREIGN KEY fkname REFERENCES qotwMember(MemberId), 
PostDate date, 
Vote int, 
PRIMARY KEY (QuestionId) 
)"; 
mysql_query($sql,$con); 

Ensuite, j'essaie d'insérer des données dans ces tableaux. Dans le tableau qotwMember, les données s'entrée, mais lorsque je tente d'insérer des données dans la table qotwQuestion1111, il me donne l'erreur « Erreur: Table « database1.qotwQuestion1111 »n'existe pas »

Je ne peux pas comprendre ce que je fais mal ici. S'il vous plaît aidez-moi avec ce problème.

Remarque: Les deux tables ont été créées dans un autre PHP.

Cordialement Zeeshan

+0

Je suppose dans la dernière phrase lorsque vous dites "Les deux tables ont été créées dans un autre php". tu veux dire dans différents fichiers PHP? Je ne voulais pas le modifier car je n'étais pas sûr. –

Répondre

0

Etes-vous sûr que vous sélectionnez la bonne base de données à chaque fois? Voir: mysql_select_db()

+0

oui ... j'utilise la bonne base de données ... aussi si je supprime la balise REFERENCE et AUTO INCREMENT de la deuxième table .. cela fonctionne bien –

+0

Quel moteur de table utilisez-vous? Les références de clé étrangère sont uniquement prises en charge par InnoDB. – Tomalak

0

Je suppose que vous ne nous donnez pas le vrai SQL parce qu'aucune de ces instructions ne fonctionnera réellement - il vous manque le type de données pour la colonne principale et avez des virgules supplémentaires.

Si tel est votre vrai SQL, alors assurez-vous de mettre or die(mysql_error($con)); après les appels à mysql_query

0

Lorsque vous créez vos tables, il est probablement plus facile d'utiliser une extrémité avant MySQL, comme MySQL query browser au lieu d'essayer d'exécuter les instructions CREATE TABLE dans PHP. Je suppose qu'il y a une erreur de syntaxe dans votre deuxième instruction, donc la table n'est pas créée. L'extrémité avant vous montrera ce qu'est l'erreur de syntaxe.

Vous pouvez également vérifier la valeur de retour de mysql_query pour voir s'il y a une erreur, puis utiliser mysql_error() pour le lire.

0

J'ai eu le même problème que vous avec la création de clé étrangère dans MySQL (ce qui est votre erreur).

Lors de la création de clés étrangères, la colonne de clé étrangère et la colonne de référence doivent toutes deux avoir le même type et la même taille de données. J'ai remarqué que vous n'avez pas donné de type de données ou de taille à votre colonne de clé primaire. C'est probablement ce qui cause votre erreur. En outre, comme d'autres l'ont fait remarquer, le moteur que vous utilisez déterminera si vous pouvez utiliser des clés étrangères.

Si vous déclarez 'MemberID' comme 'MemberID varchar (255) NOT NULL PRIMARY KEY', cela devrait fonctionner comme vous l'avez maintenant. Je suggérerais toujours de donner à vos colonnes de clé primaire un type de données et une taille possible. Je ne sais pas ce que sont vos tables, mais pour une colonne de clé primaire qui est juste un ID, je recommanderais d'en faire un INT (n'oubliez pas de changer votre colonne de clé étrangère pour refléter ce changement).

Questions connexes