2010-02-22 14 views
0

quand il donne une erreur je veux qu'il fasse 2 choses.PHP: plusieurs commandes dans die/exit

  1. echo nl2br ($ qVraagOp);
  2. mysql_error();

donc je thougth:

$rVraagOp = mysql_query($qVraagOp) or die(echo nl2br($qVraagOp); mysql_error();); 

Je peux écrire une fonction qui fait ces deux choses et ensuite appeler mais un peu redondant. Y a-t-il un autre moyen?

Matthy

+1

Que diriez-vous de ne pas utiliser die()? S'il vous plaît lisez ceci http://stackoverflow.com/questions/2130105/should-you-always-end-mysql-queries-with-or-die/2130127#2130127 – LiraNuna

+0

Pouvez-vous nous donner une raison pour laquelle vous voudriez utiliser ' mourir? –

+0

ooo yust pour tester;) – matthy

Répondre

1

Je voudrais écrire une fonction comme:

function PrintDebug($DebugData) 
{ 
    if($DebugMode == 1) 
    { 
     return nl2br($DebugData) . "<br />" . mysql_error(); 
    } 
    else 
    { 
     return "Ops stuff got messed up!!!"; 
    } 
} 

Et je l'utiliser comme

$rVraagOp = mysql_query($qVraagOp) or die(PrintDebug($qVraagOp)); 

votre travail consiste à sauvegarder l'état de débogage dans un DB (pensez est m mode d'activation actif ou non) et la connexion à un fichier serait également utile. Je tiens également à souligner que je ne l'ai pas testé.

0

Donc, vous voulez montrer à la fois nl2br($qVraagOp) et mysql_error()? Ce serait

or die(nl2br($qVraagop) . PHP_EOL . mysql_error()) 

(en utilisant la constante PHP_EOL pour placer une nouvelle ligne entre nl2br($qVraagOp) et le mysql_error())

0

Je suis shouldnt essayer sur PHP, mais il devrait fonctionner. Désolé, si non :)

$rVraagOp = mysql_query($qVraagOp) or echo(nl2br($qVraagOp)) and die(mysql_error()); 
5

juste mourir avec un message d'erreur technique n'est pas vraiment utile, au moins pour vos utilisateurs finaux; et vous devriez concevoir votre site en les gardant à l'esprit.

Une solution qui est probablement plus utile à tout le monde serait:

  • journal le message d'erreur technique à un fichier, que vous parfois vérifier
  • Afficher une belle "oups, une erreur a est apparu "page à l'utilisateur final.


encore, si vous avez vraiment besoin de cela, vous pouvez:

  • Concaténer les informations, avoir seulement une chaîne
  • utiliser un if/else bloc; ce qui pourrait rendre votre code plus facile à lire.


Une belle solution pourrait être d'utiliser des exceptions (semi-pseudo-code):
Bien sûr, cela étant donné que vous avez défini quelque part MySQLException.

try { 
    // Do some stuff 

    if (!mysql_query(...)) { 
     throw new MySQLException(mysql_error()); 
    } 

    // Some other stuff 
} catch (MySQLException $e) { 
    // Deal with the MySQLException kind of Exception 
    // i.e. deal my SQL errors 
    // => Log to file 
    // + display a nice error page 
} catch (Exception $e) { 
    // At least, if something in the try block 
    // might raise an Exception that's not a MySQLException 
} 

Une bonne chose avec exception est que tout le code qui traite des erreurs est à un endroit: il n'y a pas die partout au milieu de votre code

0

Vous pouvez écrire

$rVraagOp = mysql_query($qVraagOp) 
      or die(sprintf("%s%s%s", nl2br($qVraagop), PHP_EOL, mysql_error())); 

die() reçoit une chaîne (ou un int) en tant qu'argument.

Soyez sûr que votre message mort est uniquement stocké dans le journal et il ne sort pas à l'utilisateur final, comme il est généralement inutile et même dangereux (révèle des informations sur votre configuration pour les attaquants potentiels.)