PHP / SQL永远不会仅更新插入

时间:2011-06-19 16:57:14

标签: php sql

由于某种原因,我的插入/更新检查只会插入。值userID确实有一个值,所以我不知道这是什么。有任何想法吗?

$result = mysql_query("SELECT * FROM users where userID = $userID ");
if (mysql_num_rows($result) > 0) {
   mysql_query("UPDATE users SET firstName='$firstName', lastName='$lastName', 
             birthday='$birthday', update='$today', accessToken='$accessToken', emailOne='$emailOne' WHERE userID='$userId'");
} else {
   mysql_query("INSERT INTO users (userID, firstName, lastName, birthday, updated, accessToken, emailOne ) 
               VALUES ('$userId', '$firstName', '$lastName','$birthday', '$today', '$accessToken', '$emailOne')");
}

2 个答案:

答案 0 :(得分:4)

你做INSERT ... ON DUPLICATE KEY UPDATE会好得多。您的版本受竞争条件的限制。完全有可能在您执行SELECT *然后尝试更新/插入查询之间,另一个脚本已插入相同的ID号,然后您的脚本中断。这也减少了一个查询的数据库负载。

同样,除非您通过mysql_real_escape_string()在查询中传递了所有这些变量,否则您可能会从Little Bobby Tables访问。

答案 1 :(得分:1)

从您插入记录的方式来看,您的userId字段似乎是varchar(或字母数字)字段。所以你的查询永远不会读取匹配它的数据,因为它正在搜索它作为数字。你必须重写第一行:

$result = mysql_query("SELECT * FROM users where userID = '$userID' ");

希望它有所帮助。