我的sql语句出了问题。我不知道我做错了什么,但它不断添加到数据库而不是上传
$result = mysql_query("SELECT id FROM users where fbID=$userID");
if (mysql_num_rows($result) > 0) {
mysql_query("UPDATE users
SET firstName='$firstName'
, lastName='$lastName'
, facebookURL='$link'
, birthday='$birthday'
, update='$today'
, accessToken='$accessToken'
, parentEmailOne='$parentEmailOne'
, WHERE fbID='$userID'");
} else {
mysql_query("INSERT INTO users
(fbID, firstName, lastName, facebookURL, birthday
, updated, accessToken, parentEmailOne )
VALUES ('$userId', '$firstName', '$lastName', '$link', '$birthday'
, '$today', '$accessToken', '$parentEmailOne')");
}
答案 0 :(得分:5)
我在第一个查询中看到你使用$ userID,而在INSERT中你使用的是$ userId
答案 1 :(得分:4)
您的第一个(我的意思是更新)查询中有一个额外的逗号:
'... $parentEmailOne', WHERE fbID='$userID'");
^
答案 2 :(得分:3)
在UPDATE
条款之前的WHERE
声明中有一个额外的逗号:
parentEmailOne='$parentEmailOne', WHERE fbID='$userID'"
^^^^
但是,你也应该确保你的变量$userID
不为空并且回显mysql_num_rows()
以查看你从SELECT
此外,在您的SELECT
中,您使用变量$userID
,但在INSERT
中使用$userId
。注意大写差异。
答案 3 :(得分:2)
您需要在第一个查询fbID='$userID'
另外,在第二个SQL
上,
之前你不需要这个where
最后,您在第一个引用上使用userID
,在最后一个引用上使用userId
答案 4 :(得分:2)
名称是否包含任何撇号?
您需要确保使用mysql_real_escape_string
答案 5 :(得分:1)
您是说它是插入而不是更新?换句话说,它没有找到您希望它找到的现有记录?
我建议你不要做“更新,如果记录存在,否则自己插入”逻辑,你会看到MySQL的built-in functionality。
答案 6 :(得分:1)
update是关键字,您必须使用分隔符。 第一个查询中的一个逗号是额外的
$result = mysql_query("SELECT `id` FROM `users` where `fbID`=$userID");
if (mysql_num_rows($result) > 0) {
mysql_query("UPDATE `users` SET `firstName`='$firstName', `lastName`='$lastName', `facebookURL`='$link', `birthday`='$birthday', `update`='$today', `accessToken`='$accessToken', `parentEmailOne`='$parentEmailOne' WHERE `fbID`='$userID'");
} else {
mysql_query("INSERT INTO `users` (`fbID`, `firstName`, `lastName`, `facebookURL`, `birthday`, `updated`, `accessToken`, `parentEmailOne` ) VALUES ('$userId', '$firstName', '$lastName', '$link', '$birthday', '$today', '$accessToken', '$parentEmailOne')");
}
这是标准代码
答案 7 :(得分:0)
如果userID列是varchar,则应在第一个查询中引用$ userID变量