我制作了两个表来存储用户信息,以及他们上传的照片信息。 一切顺利,除非我尝试将userID插入照片表,mysql就是不要接受它。问题可能来自外键,但我不知道如何修复它。
CREATE TABLE IF NOT EXISTS users (
userID smallint(7) NOT NULL auto_increment,
email varchar(60) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (userID),
UNIQUE KEY email (email)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS photos (
photoID MEDIUMINT(7) NOT NULL AUTO_INCREMENT,
userID SMALLINT(7),
title VARCHAR(150),
brief TEXT,
PRIMARY KEY(photoID),
INDEX (userID),
FOREIGN KEY (userID)
REFERENCES users(userID)
) ENGINE=INNODB;
我用来向照片表插入信息的sql命令
$sql = "INSERT INTO photos (userID ,title, brief)".
"VALUES ('$uid', '$title','$bodytext')";
即使$uid
被替换为存在于用户表(userID)中的静态数字(如'2'),它仍然无法插入。
我提出了添加mysql_error
功能的建议,但是,它没有显示任何内容......
$sql = "INSERT INTO photos (userID ,title, brief)".
"VALUES ('2', '$title','$bodytext')";
$res = mysql_query($sql);
if ($res === FALSE) {
die(mysql_error());
}
return mysql_query($sql);
答案 0 :(得分:1)
您是否检查了确切的错误消息?如果查询失败,MySQL函数将返回'FALSE':
$sql = "INSERT ...";
$res = mysql_query($sql);
if ($res === FALSE) {
die(mysql_error());
}
这将输出查询失败的确切原因。在你这样做之前,我们最多可以猜测问题是什么。
错误很可能是由于您的值字段中有额外的逗号:
$sql = "INSERT INTO photos (`userID` ,title, brief, )".
^---here
导致语法错误。
答案 1 :(得分:0)
两个简单的调试技巧:
&LT 1为卤素;检查要发送到服务器的真实SQL代码。将此行添加到PHP代码中:
echo htmlspecialchars($sql);
...在浏览器中找到查询并将其粘贴到MySQL客户端(HeidiSQL,PHPMyAdmin或其他)中。请密切注意可能的错误消息。
&LT 2 - ;检查所有功能中的错误条件:
$con = mysql_connect(...);
if( !$con ){
die( htmlspecialchars(mysql_error());
}
...
$res = mysql_query(...);
if( !$res ){
die( htmlspecialchars(mysql_error());
}
答案 2 :(得分:0)
您不能像所有其他人一样插入外键的值。 以我的代码为例:
mysql_query("INSERT INTO 'bikemodel' VALUES('1', 'Cougar 125', '2009', 'Scooter CVT 1sp 150cc', 'Scooter', 'Road Bike', '150', foreign key=1)");