我的PHP SQL语句出了什么问题?

时间:2011-05-04 20:50:29

标签: php mysql

我的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')");
}

8 个答案:

答案 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变量

相关问题