2009-10-30 41 views
0

我試圖編寫一個函數來檢查用戶是否存在於表中,如果是,更新行,如果沒有,插入它。php函數插入或更新mysql表的真/假

這裏是我的功能:

 function UserExists($screenname){ 
      $mysql = mysql_fetch_array (mysql_query("SELECT * FROM `users` WHERE `screenname` = '$screenname' ")); 
       if($mysql){ 
        return TRUE; 
       }else{ 
        return FALSE; 
       } 
} 

和IM使用以下執行此功能:

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

致電mysql_error打電話後,看看你正在得到什麼錯誤。另一個好的調試技巧是在服務器上使用MySQL客戶端(如mysqlfront或phpMyAdmin)執行它。

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列,並用它來引用數據庫行。

0

你最好的解決辦法是對重複鍵JoostK說

0

我只是建議在這種情況下使用REPLACE INTO SET col = val,所有你需要做的就是定義表上的唯一索引。

​​將查看唯一索引,如果一行已經存在,它將更新現有的,如果不存在,它將插入一個新的索引。