'or die()' mit Bedingung?

Hallo,

ich möchte in einem PHP-Script die-Abbrüche je nach Zustand einer boolschen Variablen vornehmen oder kommentieren. Also etwa:

define("myDEBUG", true);
$link = mysql\_connect(...) or if (myDEBUG) {die("Db-Verbindung nicht möglich")} else {die()}

Damit hätte ich die Möglichkeit, an mehreren Stellen ggf. eine Fehlermeldung auszugeben oder den Fehler auch zu ignorieren („die()“ weglassen).

Offensichtlich funktioniert das so nicht. Wie verfahren Profis, wenn sie an zentraler Stelle (z. B. mittels einer Konstanten) das Fehlerverhalten ihres Scripts steuern möchten?

Vielen Dank.

JayKay

Moin

define(„myDEBUG“, true);
$link = mysql_connect(…) or if (myDEBUG) {die(„Db-Verbindung
nicht möglich“)} else {die()}

$link = mysql_connect(‚localhost‘, ‚mysql_user‘, ‚mysql_password‘);

$link ist bei Erfolg eine Verbindung oder bei nicht Erfolg ein FALSE

also prüfen wir den $link auf false und geben entsprechend eine meldung aus aber nur wenn debug true ist.

if (!$link) {
 if (!$debug) { die();}
 die('Verbindung schlug fehl: ' . mysql\_error());
} else {
 if ($debug) {echo "connected";};
}

ich hab immer eine variable $sys für systemzustände $sys[‚debug‘] , etc …

übrigens wollt ich dir noch mitteilen das ein debug , den programm ablauf besser sichtbar zu machen .
das können genauere Meldungen sein oder einfach nur gewisse Zustandsanzeigen. Ob nun Fehler oder nicht ist eigentlich nicht debug spezifisch , wird aber auch gerne für die Fehlersuche genutzt , aber auch für grenzwert tests etc.

Denn ein Fehler sollte irgendwie immer angezeigt werden , es reicht aber dem user zu sagen das es ein Fehler ist , während dem Programmierer das wirklich nicht ausreicht , der muss schon einiges mehr an detail infos bekommen .

Guten Morgen,

$link ist bei Erfolg eine Verbindung oder bei nicht Erfolg ein
FALSE

also prüfen wir den $link auf false und geben entsprechend
eine meldung aus aber nur wenn debug true ist.

if (!$link) {
if (!$debug) { die();}
die('Verbindung schlug fehl: ’ . mysql_error());
} else {
if ($debug) {echo „connected“;};
}

Schöner Vorschlag. Danke (und Sternchen :smile:). Das funktioniert sicher auch mit mysql_query(). Aber wie macht man das in gutem Stil für mysql_select_db() und andere Dinger, die nicht in eine Variable übergeben werden?

Danke nochmals und ein schönes Wochenende.

JK

define(„myDEBUG“, true);
$link = mysql_connect(…) or if (myDEBUG) {die(„Db-Verbindung
nicht möglich“)} else {die()}

Damit hätte ich die Möglichkeit, an mehreren Stellen ggf. eine
Fehlermeldung auszugeben oder den Fehler auch zu ignorieren
(„die()“ weglassen).

Offensichtlich funktioniert das so nicht.

$link = mysql\_connect(...) or die( DBG ? "foo" : null );

oder schoener mit einem eigenen wrapper:

function ourDie($msg) {
 die( DBG ?$msg : null );
}
$link = mysql\_connect(...) or ourDie($msg);

Wie verfahren
Profis, wenn sie an zentraler Stelle (z. B. mittels einer
Konstanten) das Fehlerverhalten ihres Scripts steuern möchten?

wie von techpech schon angedeutet: bei profis wuerde der datenbank abstraktions layer eine exception werfen, die vom framework in einer huebschen fehlerseite aufbereitet wuerde.