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 — Devuelve un mensaje de error con un valor numérico de la operación anterior con MySQL
Descripción
Devuelve un error numérico de la última función de MySQL.
Los errores que vienen del proceso final de la base de datos ya no emiten peligros. A su vez, utilizan mysql_errno() para recuperar el código con error. Nótese que ésta función solamente devolverá el código con error de la mas reciente función ejecutada de MySQL (sin incluir a mysql_error() y mysql_errno()), asi que si se quiere usar, hay que asegurarse de revisar el valor antes de llamar otra función de MySQL.
Parámetros
- link_identifier
-
La conexión MySQL. Si el identificador de enlace no se especifica, el último enlace abierto por mysql_connect() es asumido. Si no se encuentra dicho enlace, la función intentará establecer un nuevo enlace como si mysql_connect() fuese invocado sin parámetros. Si no se encuentra o establece una conexión, un error de nivel E_WARNING es generado.
Valores devueltos
Devuelve un error numérico de la última función de MySQL, o 0 (cero) si no ha ocurrido un error.
Ejemplos
Example #1 Ejemplo demysql_errno()
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!mysql_select_db("nonexistentdb", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link). "\n";
}
mysql_select_db("kossu", $link);
if (!mysql_query("SELECT * FROM nonexistenttable", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
}
?>
El resultado del ejemplo sería algo similar a:
1049: Unknown database 'nonexistentdb' 1146: Table 'kossu.nonexistenttable' doesn't exist
Ver también
- mysql_error() - Devuelve el texto con error del mensaje de la anterior operación MySQL
- » 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.
