使用php在mysql中创建引用表时出现问题

时间:2009-07-06 14:08:51

标签: php mysql

我在PHP中创建了两个MySQL表,使用下面给出的代码:

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

然后我尝试将数据插入这些表中。在qotwMember表中,输入了数据,但是当我尝试将数据插入qotwQuestion1111表时,它给出了错误“错误:表'database1.qotwQuestion1111'不存在”< / p>

我无法弄清楚我在这里做错了什么。请帮我解决这个问题。

注意:两个表都是在不同的php中创建的。

此致 Zeeshan

4 个答案:

答案 0 :(得分:0)

您确定每次都选择正确的数据库吗?请参阅:mysql_select_db()

答案 1 :(得分:0)

我怀疑你没有给我们真正的SQL,因为这些语句都不会真正起作用 - 你缺少主列的数据类型并且有一些额外的逗号。

如果这是您真正的SQL,请确保在调用or die(mysql_error($con));之后放置mysql_query

答案 2 :(得分:0)

在创建表时,可能更容易使用MySQL前端,例如MySQL query browser,而不是尝试在PHP中运行CREATE TABLE语句。我的猜测是你的第二个语句中存在语法错误,因此表没有被创建。前端将显示语法错误。

或者,您可以检查mysql_query的返回值以查看是否有错误,然后使用mysql_error()将其读出来。

答案 3 :(得分:0)

我遇到了与MySQL中的外键创建相同的问题(这是你的错误所在)。

创建外键时,外键列和引用列的数据类型和大小必须相同。我注意到你没有给你的主键列任何数据类型或大小。这可能是导致错误的原因。此外,正如其他人所指出的那样,您使用的引擎也将决定您是否可以使用外键。

如果将'MemberID'声明为'MemberID varchar(255)NOT NULL PRIMARY KEY',它应该可以正常工作。我建议总是给你的主键列一个数据类型和可能的大小。我不知道你的表是什么,但对于一个只是一个ID的主键列,我建议把它变成某种类型的INT(只记得改变你的外键列来反映这个变化)。