2009-10-30 6 views
0

En essayant d'écrire une fonction pour vérifier si un utilisateur existe dans une table, si c'est le cas, mettez à jour la ligne, sinon, insérez-la.Une fonction php pour insérer ou mettre à jour la table mysql sur true/false

Voici ma fonction:

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

Et im exécuter cette fonction en utilisant les éléments suivants:

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

Son ne rien faire, ne pas jeter des erreurs, mais pas non plus de mettre à jour la table.

Répondre

0

Appelez mysql_error après les appels pour voir quelle erreur vous obtenez. Une autre bonne technique de débogage consiste à l'exécuter sur le serveur en utilisant un client MySQL tel que mysqlfront ou phpMyAdmin.

3

Vous voudrez jeter un oeil à la INSERT ... ON DUPLICATE KEY UPDATE ...MySQL query syntax pour que cela fonctionne avec une seule requête.

INSERT INTO users (screenname, token, secret) VALUES ('screenname', 'token', 'secret') 
ON DUPLICATE KEY UPDATE token = 'token', secret = 'secret' 

screenname doit être unique (ou une clé primaire) que vous n'avez probablement pas à l'heure actuelle. Je suggère d'ajouter une colonne ID dans votre table de base de données et l'utiliser pour faire référence aux lignes de la base de données.

0

Votre meilleure solution est sur clé Duplicate JoostK a déclaré

0

Je voudrais simplement suggère d'utiliser REPLACE INTO SET col = val dans ce cas, tout ce que vous devez faire est de définir un index unique sur la table.

Le Replace Command aura un regard sur les index uniques, si une ligne existe déjà il mettra à jour l'existant, sinon il en insérera un nouveau.

Questions connexes