我试图编写一个函数来检查用户是否存在于表中,如果是,则更新该行,如果没有,则插入它。
这是我的功能:
function UserExists($screenname){
$mysql = mysql_fetch_array ( mysql_query("SELECT * FROM `users` WHERE `screenname` = '$screenname' "));
if($mysql){
return TRUE;
}else{
return FALSE;
}
}
我使用以下方法执行此功能:
if(UserExists($user)){
mysql_query("UPDATE `users` SET `token` = '$token' , `secret` = '$secret' WHERE `screenname` = '$user' ");
}else{
mysql_query("INSERT INTO `users` (`screenname`, `token`, `secret`) VALUES ('$user', '$token', '$secret')");
}
它没有做任何事情,没有抛出任何错误,但也没有更新表。
答案 0 :(得分:3)
您想要查看INSERT ... ON DUPLICATE KEY UPDATE ...
MySQL query syntax,只需一个查询即可使用。
INSERT INTO users (screenname, token, secret) VALUES ('screenname', 'token', 'secret')
ON DUPLICATE KEY UPDATE token = 'token', secret = 'secret'
screenname
应该是您可能目前没有的唯一(或主键)。我建议在数据库表中添加一个ID列,并使用它来引用数据库行。
答案 1 :(得分:0)
在通话后拨打mysql_error
以查看您收到的错误。另一个好的调试技术是使用MySQL客户端(如mysqlfront或phpMyAdmin)在服务器上执行它。
答案 2 :(得分:0)
你最好的解决方案是在JoostK声明
时打开DUPLICATE KEY答案 3 :(得分:0)
我建议在这种情况下使用REPLACE INTO SET col = val
,您需要做的只是在表上定义一个唯一索引。
Replace Command将查看唯一索引,如果一行已存在则会更新现有索引,如果不存在则会插入新索引。