2010-02-22 4 views
0

, когда он дает ошибку, я хочу, чтобы он сделал 2 вещи.PHP: несколько команд в die/exit

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

так я thougth:

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

я могу написать функцию, которая делает эти две вещи, а затем вызвать это, но это немного излишним. есть ли другой способ?

Matthy

+1

Как насчет НЕ использовать die()? Пожалуйста, прочтите это http://stackoverflow.com/questions/2130105/should-you-always-end-mysql-queries-with-or-die/2130127#2130127 – LiraNuna

+0

Можете ли вы дать нам повод, почему вы хотели бы использовать ' die'? –

+0

ooo yust для тестирования;) – matthy

ответ

1

Я бы написать функцию, как:

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

И я хотел бы использовать его как

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

это ваша работа, чтобы сохранить статус отладки в БД (думаю, м активный режим), и также полезно войти в файл. Также хочу отметить, что я его не тестировал.

0

Итак, вы хотите, чтобы показать, как nl2br($qVraagOp) и mysql_error()? Это было бы

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

(используя константу PHP_EOL поместить строку между nl2br($qVraagOp) и mysql_error())

0

Я не должен попробовать это на PHP, но он должен работать. Извините, если нет :)

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

просто умирающий с техническим сообщением об ошибке не очень полезен, по крайней мере для ваших конечных пользователей; и вы должны проектировать свой сайт с учетом их.

Решение, которое, вероятно, более полезным для тех, кто должен был бы:

  • записи сообщения техническая ошибка в файл, который вы будете иногда проверять
  • Дисплей хороший "упс, ошибка имеет произошла "странице конечного пользователя.


Тем не менее, если вы действительно нуждаетесь в этом, вы можете:

  • CONCATENATE как информацию, чтобы иметь только одну строку
  • Используйте, если/другое-блок; что может сделать ваш код более легким для чтения.


хорошее решение может быть использование исключений (полу-псевдо-код):
Конечно, это учитывая, что вы уже определили 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 
} 

Одна хорошая вещь с Exception является то, что весь код, который имеет дело с ошибками в одном месте: нет die везде в середине кода

0

Вы можете написать

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

die() принимает строку (или int) в качестве аргумента.

Убедитесь, что ваше умирающее сообщение хранится только в журнале и не выводит на конечный пользователь, так как это, как правило, бесполезно и даже опасно (показывает информацию о конфигурации для потенциальных злоумышленников.)