php
  • mysql
  • 2011-05-04 34 views 2 likes 
    2

    我的sql语句有问题。我不知道我在做什么错,但它不断添加到数据库中多,而不是上传我的PHP 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

    什么FBID列的类型? – 2011-05-04 20:53:23

    +1

    你的意思是插入而不是更新? *上传*不清楚 – 2011-05-04 20:53:23

    +0

    暂时将第一行更改为mysql_query(“SELECT id FROM users where fbID = $ userID”)或die(mysql_error());'以查看是否正在返回错误。 – webbiedave 2011-05-04 20:56:23

    回答

    0

    如果用户ID列是一个varchar,你要引用$用户ID变量在第一个查询

    5

    我见在第一个查询使用$用户ID,而在INSERT您使用$用户id

    2

    你需要先查询报价,fbID='$userID'

    而且,你不需要这个,前上的最后

    1

    第二SQL

    而在去年,你在第一参考使用userIDuserId你是说把它插入,而不是更新?换句话说,它没有找到您期望找到的现有记录?

    我建议你不要做“如果记录存在更新,否则插入”逻辑,你看看MySQL的built-in functionality

    1

    更新是关键字,您必须使用分隔符。 并在第一查询一个逗号是多余的

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

    这是标准的代码

    4

    有一个在你的第一个(我指的是UPDATE)查询一个额外的逗号:

    '... $parentEmailOne', WHERE fbID='$userID'"); 
            ^
    
    3

    您有一个在WHERE条款之前的UPDATE声明中附加逗号:

    parentEmailOne='$parentEmailOne', WHERE fbID='$userID'" 
               ^^^^ 
    

    但是,也应该确保您的变量$userID不是空和回声出mysql_num_rows()看到你从SELECT

    得到什么回此外,在您的SELECT使用可变$userID但在你的INSERT您正在使用$userId。请注意大写差异。

    2

    名称是否包含任何单引号?

    你要一定要使用mysql_real_escape_string

    相关问题