2013-02-10 2 views
1

avec le code PHP pur (et non cadres) est-il une plus élégante façon de gérer les erreurs mysqli comme indiqué ci-dessous:PHP Plus élégante façon de gérer les erreurs mysqli

if (!mysqli_query($con, $sql)) { 
      # Throw error so we can handle them 
      echo mysqli_error($con); 

      # handle a duplicate email 
      if (strpos(mysqli_error($con), "email_UNIQUE") !== false) { 
        $_SESSION["errors_found"] = true; 
        array_push($_SESSION["error_messages"], "Email given is already registered."); 
      } 

      # handle a duplicate username 
      else if (strpos(mysqli_error($con), "username_UNIQUE") !== false) { 
        $_SESSION["errors_found"] = true; 
        array_push($_SESSION["error_messages"], "Username is already taken."); 
      } 

      # handle any other sql query error... 
      else { 
       die("Database query error: " . mysqli_error($con)); 
      } 
    } 
+0

Dans ce cas, oui. Avez-vous une meilleure façon de suggérer éventuellement? Merci beaucoup pour l'aide. –

Répondre

0

Tout d'abord, je ne dirais pas un tel processus "traitant les erreurs mysqli", mais plutôt "validation des entrées utilisateur".
Et d'autre part, je ne ferais pas une telle validation de cette façon.

J'ai toujours été sous l'impression que la validation de l'entrée de l'utilisateur par rapport à la base de données s'effectuait généralement à l'aide de requêtes SELECT, et non d'INSERT.
Il va non seulement rendre votre application sans erreur, mais aussi la rendre plus flexible, permettant des vérifications séparées pour l'enregistrement AJAX par exemple. En ce qui concerne les véritables erreurs mysqli - vous devez vraiment gérer eux, au lieu de simplement mourir.
façon encore plus facile pratique serait lancer une exception:

if (!mysqli_query($con, $sql)) { 
    throw new Exception(mysqli_error($con)); 
} 

qui sera correctement traitée en fonction des paramètres de gestion des erreurs l'ensemble du site et de fournir également le journal de suivi n'a pas de prix.

+0

Je n'ai jamais considéré la méthode select au lieu de forcer un insert ici. En outre, merci de mentionner la gestion des erreurs avec "jeter". –

+0

Aussi, si je peux demander, comment feriez-vous votre "validation d'entrée utilisateur"? –

Questions connexes