Sorun php kullanarak mysql bir referans tablosu oluşturma

4 Cevap php

Ben aşağıda verilen kodu kullanarak, PHP bir iki MySQL tabloları oluşturma:

$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);

Sonra ben bu tabloya veri eklemek için deneyin. qotwMember tabloda, veri girdi alır, ama ben qotwQuestion1111 tabloya veri eklemek çalıştığınızda, bana hata "Hatası veriyor: 'Tablo' database1.qotwQuestion1111 'doesn t "var

Ben burada yanlış ne yapıyorum bilemiyorum. Bu sorun bana yardımcı olun.

Not: Her iki tablo farklı bir php yaratılmıştır.

Regards Zeeshan

4 Cevap

Eğer doğru veritabanını her zaman seçerek emin misiniz? Bkz: mysql_select_db()

Ben bu ifadelerin hiçbiri aslında çalışacak çünkü bize gerçek SQL veren değil şüpheli - birincil sütun için veri türü eksik ve bazı ekstra virgül var demektir.

Bu gerçek, SQL ise, o emin or die(mysql_error($con)); çağrıları sonucu mysql_query koymak yapmak

Eğer tablo oluştururken, bu tür yerine PHP içindeki CREATE TABLE ifadeleri çalıştırmak için çalışmakla MySQL query browser gibi bir MySQL ön uç kullanmak için muhtemelen daha kolaydır. Benim tahminim ikinci deyiminde bir sözdizimi hatası olduğunu, bu nedenle tablo oluşturulur almıyor. Ön uç sözdizimi hatası ne olduğunu size gösterecektir.

Alternatif olarak, size dönüş değerini kontrol edebilir bir hata varsa mysql_query görmek için, ve sonra mysql_error() bunu okumak için kullanabilirsiniz.

Ben MySQL yabancı anahtar oluşturma (hata hakkında ne olduğu) ile sizinle aynı problem vardı.

Yabancı anahtarlar, yabancı anahtar sütunu hem referans sütunu oluştururken aynı veri tipi ve boyutta olmalıdır. Ben size birincil anahtar sütunu herhangi bir veri türü veya boyutu vermediler fark ettim. Bu hataya neden olduğunu muhtemelen. Diğerleri işaret gibi yabancı tuşlarını kullanabilirsiniz eğer Ayrıca, aynı zamanda kullanarak hangi motor belirleyecektir.

Siz 'MemberID' bildirirseniz 'MemberID varchar (255) NOT NULL PRIMARY KEY' o şimdi buna sahip olarak çalışması gerekir. Ben her zaman birincil anahtar sütunları, bir veri türü ve muhtemel büyüklüğü veren öneririm. Ben tabloları için ne olduğunu bilmiyorum, ama sadece bir kimliği olan birincil anahtar sütun için, ben (sadece bu değişikliği yansıtmak için yabancı anahtar sütun değiştirmeyi unutmayın) bu çeşit bir INT yapma öneriyoruz.