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 — 최근 MySQL 작업으로 발생한 에러 번호를 반환
설명
int mysql_errno
([ resource $link_identifier
] )
최근 실행된 MySQL 함수로부터 에러 번호를 반환한다.
MySQL 데이터베이스 후면으로부터 발생한 에러들은 경고를 발생하지 않는다. 대신, mysql_errno()를 사용하여 에러 코드를 조회할 수 있다. 본 함수는 가장 최근에 실행된 MySQL 함수(mysql_error(), mysql_errno()는 제외)로부터 발생한 에러 코드만을 반환하므로 다른 MySQL 함수를 호출하기 전에 에러코드를 점검하기 위해 본 함수를 사용할 필요가 있다.
인수
- link_identifier
-
MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.
반환값
최근 MySQL 함수로부터 에러를 반환하거나 에러가 없을 경우에는 0을 반환한다.
예제
Example #1 mysql_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";
}
?>
위 예제의 출력 예시:
1049: Unknown database 'nonexistentdb' 1146: Table 'kossu.nonexistenttable' doesn't exist
timstamp.co.uk
25-Jun-2007 07:51
simon at paarlberg dot dk
13-Dec-2005 03:40
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);
}
phpnet at vemconcursos dot com
07-Dec-2005 06:31
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";
}
admin at artfabrique dot ru
18-Oct-2005 05:28
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
apoio at cyberspace dot org
29-Jun-2000 05:58
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.
