If you are receiving errors like:
Warning: mysql_close(): 5 is not a valid MySQL-Link resource
Check that you are calling mysql_error() and mysql_errno() BEFORE you call mysql_close().
mysql_errno
(PHP 4, PHP 5)
mysql_errno — Liefert die Nummer einer Fehlermeldung einer zuvor ausgeführten MySQL Operation
Beschreibung
Liefert die Fehlernummer der letzten MySQL Funktion.
Fehler, die vom MySQL Server kommen, führen nicht mehr zu einer Ausgabe von Warnungen. Stattdessen sollten Sie die Funktion mysql_errno() verwenden, um die Fehlernummer zu erhalten. Beachten Sie, dass diese Funktion nur die Fehlernummer der zuletzt ausgeführten MySQL Funktion liefert (ausgeschlossen sind die Funktionen mysql_error() und mysql_errno()). Wenn Sie diese Funktion verwenden wollen, sollten Sie den Wert überprüfen, bevor Sie eine weitere MySQL Funktion aufrufen.
Parameter-Liste
- 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.
Rückgabewerte
Liefert die Fehlernummer der letzten MySQL Funktion oder 0 (Null) wenn kein fehler auftrat.
Beispiele
Beispiel #1 mysql_errno() example
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!mysql_select_db("nicht_vorhandenes_schema", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link). "\n";
}
mysql_select_db("kossu", $link);
if (!mysql_query("SELECT * FROM nicht_vorhandene_tabelle", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
1049: Unknown database 'nonexistentdb' 1146: Table 'kossu.nonexistenttable' doesn't exist
Siehe auch
- mysql_error() - Liefert den Fehlertext der zuvor ausgeführten MySQL Operation
- » MySQL error codes
Function for creating unique md5 keys in a database. If there are duplets, then a new md5-key will be generated. For your use:
function users_md5create($id){
global $mysql_link;
while ($done==0) {
$md5key = md5(time().($id/2).$loop).md5(time().$id.$loop);
$query = "INSERT INTO users_md5create SET md5key='$md5key', fkey='$id', created=UNIX_TIMESTAMP() ";
$mysql_result = mysql_query($query, $mysql_link);
if(mysql_errno($mysql_link)!=1062) $done=1;
$loop++;
}
return($md5key);
}
Watch out! Although mysql_errno() supposedly returns the error number from the last MySQL function, if you don't specify a link identifier, it assumes the last link *opened*, NOT the last link *used*.
That means you can actually have mysql_errno() blindly ignore the error caused by the last MySQL function if it didn't use the last opened link.
Here's an example:
$link1 = mysql_connect('localhost', 'user1', 'password1');
$link2 = mysql_connect('localhost', 'user2', 'password2');
// do something wrong using the first link
mysql_select_db('nonexistentdb', $link1);
// if you don't specify the link identifier ...
if (mysql_errno()) {
// the error from the last MySQL function is not reported
echo mysql_errno() . ': ' . mysql_error() . "\n";
}
All MySQL ErrorCodes can be found in its' on-line manual.
For lazy one here is the link :
http://dev.mysql.com/doc/refman/5.0/en/error-handling.html
All mysqld error messages are located into the file /usr/local/share/mysql/english/errmsg.txt and listed in numerical order from 999 to 1175. You can change the output language as well, issuing the '-L spanish' option for example. See the manual for more details.
