echo "<p>Query = ".$query."</p>";
$result = mysql_query($query);
dberror();
echo "Ihre Eingabe war korrekt und wurde in die Datenbank eingetragen!";
$db = mysql_close();
dberror();
>
> dberror() ist definiert wie folgt:
>
> ~~~php
function dberror()
> {
> if (mysql_errno())
> {
> switch(mysql_errno())
> {
> case 1062:
> die ("Ein Eintrag mit diesen Daten existiert bereits! Bitte korrigieren Sie Ihre Eingabe!<br>");
> break;
> default:
> die (mysql_errno().": ".mysql_error()."<br>");
> }
> }
> }
>
Review:
> $db = mysql_close();
Du schließt also die Verbindung bevor Du
> dberror();
aufrufst und darin dann mysql_errno() und mysql_error(). Was soll das bringen? In der Dokumentation steht zu den Parametern:
Zitat:
Verbindungs-Kennung:
Die MySQL-Verbindung. Wird die Verbindungskennung nicht angegeben, wird die letzte durch mysql_connect() geöffnete Verbindung angenommen. Falls keine solche Verbindung gefunden wird, wird versucht, eine Verbindung aufzubauen, wie es beim Aufruf von mysql_connect() ohne Angabe von Argumenten der Fall wäre. Falls zufällig keine Verbindung gefunden oder aufgebaut werden kann, wird eine Warnung der Stufe E_WARNING erzeugt.
Wenn die Verbindung gelöst wird, dann ist auch die letzte Fehlernummer und ~Meldung im Orkus.
Korrektur:
$result = mysql_query($query) or dberror( mysql_errno(), mysql_error(), $query );
wäre besser, denn dann kannst Du in Deiner Funktion alles auswerten.
function dberror($mysqlErrNo, $mysqlError, $query)
{
if ($mysqlErrNo)
{
switch($mysqlErrNo)
{
case 1062:
die ("Ein Eintrag mit diesen Daten existiert bereits! Bitte korrigieren Sie Ihre Eingabe!<br>");
break;
default:
die ($mysqlErrNo.": ".$mysqlError."<br>Query war: <pre>".$query."<pre>");
}
}
}
Besser wäre statt des 'die ($mysqlErrNo.": ".$mysqlError."<br><pre>".$query."<pre>");' einen Fehler zu triggern.
trigger_error('Von Dir gebauter Text', E_USER_ERROR);
... wäre Dein Freund. Kombiniere das mit mit meiner use-strict-Lösung.
Jörg Reinholz