Datenbankfeheler abfangen

Wolfsbein

Erfahrenes Mitglied
Ich benutze folgenden Code, um einen Datenbankfehler abzufangen:
PHP:
if (!($mysql_result = mysql_query($mysql_query, $dbh)))
{
    echo "<p>TEST</p>";
    exit;
}
Leider haut das nicht so hin, wie ich es gerne möchte ;). Es werden die Standardfehlermeldungen vom Parser ausgegben. Also z.B. User x hat keine Zugriffsberechtigung. Der echo und exit Befehl wird scheinbar völlig ignoriert. Ich weiß, dass ich mit mysql_querry(...) or DIE ("text"); arbeiten kann. Das ist aber in diesem Fall unbrauchbar, da ich ja auch den exit; Befehl haben will. Ist meine Syntax irgendwie falsch, oder muss ich das ganz anders machen. ?
 
exit();

Aus dem Manual:
> exit

> exit -- Beenden des aktuellen Skripts
> Beschreibung:
> void exit ( void)

> Mit exit() beenden sie - ohne Möglichkeit der Rückkehr - die
> Skriptausführung.

also für mich sieht das aus wie eine Funktion
darum wuerd ich exit(); schreiben (die klammern beachten)
:)

mage
 
Also wenn du die Ausgabe der Fehler, die bei mysql_query entstehen, unterdrücken willst, schreibst du einfach ein @ vor den Funktionsaufruf.

Aber ich verstehe nicht ganz, warum du auf die elegante Lösung mit 'or' verzichten willst.

PHP:
echo "<p>TEST</p>";
exit(); // mit oder ohne Klammern ist hier eigentlich egal, aber ohne wäre unsauberer Programmierstil
ist ja vom Effekt gleichbedeutend mit
PHP:
die("<p>TEST</p>");


reima
 
@mage: Das hilft mir leider garnichts :confused:.
@reima: Klar kann ich DIE verwenden, aber dann kann ich eben nur eine Ausgabe machen, aber das Script nicht beenden. Und genau das möchte ich haben.
Ich will im Prinzip nur wissen, wie ich mysql_query auf die richtige Ausführung testen kann, da es so, wie ich es bisher mache, anscheinend nicht funktioniert.
 
"Das script beenden"

hm ?
du meinst einfach das er aufhört weitere zeilen zu durchgehen ?

mach hal mit if(mysql..){ ech ok } else die "falsch";


mit break; kannst du auch einfach aus deiner schleife springen.
 
@godwich: Das haut nicht hin. Könnte das mal jemand bei sich selber ausprobieren und dann einen funktionierenden Code posten, bitte? Godwich, wenn man deinen Code ausführt und die Variablen für die DB, also Benuter, PW, etc. stimmen und die Datenbank ist online, dann haut es hin, wenn man aber z.B. einen falschen Benutzer angibt, dann kommt man nicht bis else.
 
du möchtest einfach überprüfen ob name und pswd von einem benutzer stimmen oder nicht ?

$usr="max";
$pwd="geheim";

$res = mysql_query("select * from tabelle where usr='$max' && pwd='$pwd'");

if($res > 0) print "eingeloggt";
else print "falsech";



wenn du eine schleife (eine simple wie deine eine ist meine ich) richtig aufbaut, muss man nicht mit exit(); arbeiten.
 
@godwich: Also kann ich meinen Code so umschreiben:
PHP:
if (($mysql_result = mysql_query($mysql_query, $dbh)) < 0)
{
    echo "<p>TEST</p>";
    exit;
}
Richtig?
Nein ich möchte nicht Name und PW überprüfen. Ich schreibe ein Installationscript für eine Tabelle und da möchte ich prüfen, ob die Tabelle erzeugt wurde.
$mysql_query ist in dem Fall sowas wie CREATE TABLE $tbname(...).
EDIT: Also das haut auch nicht hin. Ich will doch nur überprüfen, ob das Erzeugen einer neuen Tabelle erfolgreich war (habe mich da vielleicht nicht klar ausgedrückt, sorry):heul:.
 
Zuletzt bearbeitet:
use functions

Schreib das doch in eine Funktion, dann bei einem Fehler
einen Fehlercode verarbeiten :)

gruss mage
 
@mage: Danke, so werde ich es dann machen müssen. Ich glaube nur nicht, dass man nicht irgendwie schreiben kann: falls (mysql_query nicht ordungsgemäß ausgeführt) {erzeuge Fehlermeldung; beende Script;} andernfalls {schreibe ok;}. Es sollte doch eigentlich gehen.
 
Zurück