2009-07-24 7 views
0

Fonction actuelle pour exécuter une requête mysql en PHP et affiche une erreur à l'écran lorsqu'il y en a une. J'essaye de faire seulement montrer la requête et le message d'erreur à un utilisateur avec une session $_SESSION['auto_id'] == 1 et les utilisateurs réguliers verront juste un message gentil disant qu'il y a une erreurComment afficher cette erreur mysql à l'écran

Dans le deuxième exemple j'ai essayé de le faire mais je suis pas sûr comment analyser correctement le code à l'intérieur ou mourir (» «)

Travaux:

<?PHP  
    function executeQuery($sql) { 
     $result = mysql_query($sql) or die("<span style='FONT-SIZE:11px; FONT-COLOR: #000000; font-family=tahoma;'><center>An Internal Error has Occured. Please report following error to [email protected]<br><br>" . $sql . "<br><br>" . mysql_error() . "'</center></FONT>"); 
     return $result; 
    } 
?> 

ne fonctionne pas:

<?PHP 
    function executeQuery($sql) { 
     $result = mysql_query($sql) or die(" 
     <span style='FONT-SIZE:11px; FONT-COLOR: #000000; font-family=tahoma;'><center>An Internal Error has Occured. The error has been recorded<br>'</center></FONT> 
     if($_SESSION['auto_id'] == 1){ 
      echo = '<br>' . $sql . '<br><br>' . mysql_error() . " 
     } 
     "); 
?> 
+0

vous êtes 'die' chaîne n'est pas clairement citée (manque fermeture guillemet) – SilentGhost

+1

petit côté, avez-vous songé à jeter des exceptions plutôt que de mourir-ing? L'avantage est que vous pouvez détecter les erreurs avant qu'elles ne se retrouvent dans le navigateur et les traiter correctement sur votre site de production de cette façon. – Ali

+0

Ce que Ali dit: utiliser "ou mourir()" est considéré comme une mauvaise pratique – Evert

Répondre

2

Une chaîne passée à die() sera simplement envoyée au navigateur et tout code PHP qu'elle contient sera traité comme une chaîne littérale et non interprété. Vous voulez sans doute quelque chose comme ceci:

<?PHP 
function executeQuery($sql) { 
    $result = mysql_query($sql); 
    if (!$result) { 
     $error = "<span style='FONT-SIZE:11px; FONT-COLOR: #000000; font-family=tahoma;'><center>An Internal Error has Occured. The error has been recorded<br>'</center></FONT>"; 

     if($_SESSION['auto_id'] == 1){ 
      //append mysql error to string we are about to output 
      $error .= '<br>' . $sql . '<br><br>' . mysql_error() ; 
     } 
     die($error); 
    } 
    return $result; 
} 
+0

grands merci, parfois c'est les choses simples qui glisser l'esprit – JasonDavis

1

Essayez faisant cela après la mysql_query place:

if(mysql_error()) 
{ 
    // Do Stuff 

    if($_SESSION['auto_id'] == 1) 
    { 
    // Do More Stuff 
    } 
die(); 
} 

Cela vous permettra d'atteindre le même effet, et formater votre erreur ainsi.

En ce qui concerne les raisons pour lesquelles votre instruction ne fonctionne pas: les Ifs ne sont pas exécutées entre guillemets.