由于某种原因,我的插入/更新检查只会插入。值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')");
}
答案 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' ");
希望它有所帮助。