[英]Cannot insert foreign key value
我制作了两个表来存储用户信息以及他们上传的照片信息。 一切顺利,除非当我尝试将userID插入到photos表中时,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);
您检查了确切的错误消息吗? 如果查询失败,MySQL函数将返回“ FALSE”:
$sql = "INSERT ...";
$res = mysql_query($sql);
if ($res === FALSE) {
die(mysql_error());
}
这将输出查询失败的确切原因。 在执行此操作之前,我们最多只能猜测问题出在哪里。
该错误很可能是由于您在“值”字段中有多余的逗号引起的:
$sql = "INSERT INTO photos (`userID` ,title, brief, )".
^---here
导致语法错误。
两个简单的调试技巧:
<1>检查要发送到服务器的真实SQL代码。 将此行添加到您的PHP代码中:
echo htmlspecialchars($sql);
...在浏览器中找到查询,并将其粘贴到您的MySQL客户端(HeidiSQL,PHPMyAdmin或其他)中。 请密切注意可能的错误消息。
<2>检查所有功能中的错误情况:
$con = mysql_connect(...);
if( !$con ){
die( htmlspecialchars(mysql_error());
}
...
$res = mysql_query(...);
if( !$res ){
die( htmlspecialchars(mysql_error());
}
您不能像其他所有插入键一样插入外键的值。 以我的代码为例:
mysql_query("INSERT INTO 'bikemodel' VALUES('1', 'Cougar 125', '2009', 'Scooter CVT 1sp 150cc', 'Scooter', 'Road Bike', '150', foreign key=1)");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.