8791 sujets

Développement web côté serveur, CMS

Bonjour.

Est-il possible de définir une fonction personnelle au lieu de la fonction die() lorsqu'on effectue une requête mysql.

Ou sinon, comment puis-je vérifier si un user est présent dans la table? Faut-il récupérer toute la table, puis faire une boucle en php? Ou bien je peux détecter ça directement avec la requête?
Modifié par <nicolas> (03 Oct 2007 - 14:43)
Salut,

Oui tu peux mettre une fonction autre que die après.

Pour vérifier un user, ben tu regardes dans la base de donnée avec une clause WHERE user = 'jean' s'il existe un résultat (donc mysql_num_rows > 0) et si c'est le cas l'utilisateur existe bien !

A+
Merci.

J'avais oublié la fonction mysql_num_rows.

Et donc si ma requête est:
"SELECT * FROM users WHERE userName=tom"

et que je n'ai pas de tom dans ma base, il va me retourner une variable vide mais pas d'erreur sql?
bonjour,

désoler si je m'incruste mais je pense que sa requete ne vas pas marcher car son champs sera en varchar, donc il ne faut pas qu'il oublie les " " pour le tom.
Désolé de faire un post relativement HS de plus mais select * est à mon avis plus que superflu ici. Sélectionner tous les champs alors qu'on en utilise finalement aucun... sélectionner uniquement la clé auto_increment serait suffisant par exemple.
Effectivement, il faut éviter les * quand il ne le faut pas. Pour l'histoire de la fonction, on fera :
$result = mysql_query('SELECT `id` FROM `users` WHERE `userName`=\'' . mysql_real_escape_string($user) . '\'');
if(mysql_num_rows($result) === 0) {
  fonction_erreur_quelconque();
} else {
  // la suite
}


En PHP5, on pourra utiliser une Exception :
$result = mysql_query('SELECT `id` FROM `users` WHERE `userName`=\'' . mysql_real_escape_string($user) . '\'');
if(mysql_num_rows($result) === 0) {
  throw new Exception('Utilisateur ' . $user . ' introuvable');
} 

// la suite