> i made a Registration Form for user to input their Data, but i also had some
> Field Check before the data can be insert to the Mysql_Database!
> I had a question here, sometime the mysql shows the error :
> "Duplicate Key for xxx"
> I know what is this about, reguarding to my Registration Form, it mean the
> Login Name is Duplicated! But i want to show my own message to the user for
> this error instead the Mysql Error! It is meanness to show User the Mysql
> Error, cause they won't understand it!!!
> Could Someone pls tell me how i can do this?

Here's a function I use.  I just pass it the mysql_errno() and mysql_error() that
is generated with each query.  The error messages are based off the result
codes as specified on the mySQL site.  Changing these to say what you want
will be a simple matter.

hth

Chris
------------------------------------------------

function setErrorMsg( $dbErrorNum, $dbErrorMessage ) {

  $dbaMessage = "";

  switch( $dbErrorNum ) {
    case 1000:
       $dbaMessage .= "Error number : $dbErrorNum - hashchk";
       break;

    case 1001:
       $dbaMessage .= "Error number : $dbErrorNum - isamchk";
       break;

    case 1002:
       $dbaMessage .= "Error number : $dbErrorNum - NO";
       break;

    case 1003:
       $dbaMessage .= "Error number : $dbErrorNum - YES";
       break;

    case 1004:
       $dbaMessage .= "Can't create file '%-.64s' (errno: %d)";
       break;

    case 1005:
       $dbaMessage .= "Can't create table '%-.64s' (errno: %d)";
       break;

    case 1006:
       $dbaMessage .= "Can't create database '%-.64s'. (errno: %d)";
       break;

    case 1007:
       $dbaMessage .= "Can't create database '%-.64s'. Database exists";
       break;

    case 1008:
       $dbaMessage .= "Can't drop database '%-.64s'. Database doesn't exist";
       break;

    case 1009:
       $dbaMessage .= "Error dropping database (can't delete '%-.64s', errno: %d)";
       break;

    case 1010:
       $dbaMessage .= "Error dropping database (can't rmdir '%-.64s', errno: %d)";
       break;

    case 1011:
       $dbaMessage .= "Error on delete of '%-.64s' (errno: %d)";
       break;

    case 1012:
       $dbaMessage .= "Can't read record in system table.";
       break;

    case 1013:
       $dbaMessage .= "Can't get status of '%-.64s' (errno: %d)";
       break;

    case 1014:
       $dbaMessage .= "Can't get working directory (errno: %d)";
       break;

    case 1015:
       $dbaMessage .= "Can't lock file (errno: %d)";
       break;

    case 1016:
       $dbaMessage .= "Can't open file: '%-.64s'. (errno: %d)";
       break;

    case 1017:
       $dbaMessage .= "Can't find file: '%-.64s' (errno: %d)";
       break;

    case 1018:
       $dbaMessage .= "Can't read dir of '%-.64s' (errno: %d)";
       break;

    case 1019:
       $dbaMessage .= "Can't change dir to '%-.64s' (errno: %d)";
       break;

    case 1020:
       $dbaMessage .= "Record has changed since last read in table '%-.64s'";
       break;

    case 1021:
       $dbaMessage .= "Disk full.";
       break;

    case 1022:
       $dbaMessage .= "This duplicate record could not be added to the database.";
       break;

    case 1023:
       $dbaMessage .= "Error on close of '%-.64s' (errno: %d)";
       break;

    case 1024:
       $dbaMessage .= "Error reading file '%-.64s' (errno: %d)";
       break;

    case 1025:
       $dbaMessage .= "Error on rename of '%-.64s' to '%-.64s' (errno: %d)";
       break;

    case 1026:
       $dbaMessage .= "Error writing file '%-.64s' (errno: %d)";
       break;

    case 1027:
       $dbaMessage .= "'%-.64s' is locked against change";
       break;

    case 1028:
       $dbaMessage .= "Sort aborted.";
       break;

    case 1029:
       $dbaMessage .= "View '%-.64s' doesn't exist for '%-.64s'";
       break;

    case 1030:
       $dbaMessage .= "Got error %d from table handler";
       break;

    case 1031:
       $dbaMessage .= "Table handler for '%-.64s' doesn't have this option";
       break;

    case 1032:
       $dbaMessage .= "Could not find the record that was requested.";
       break;

    case 1033:
       $dbaMessage .= "Incorrect information in file: '%-.64s'";
       break;

    case 1034:
       $dbaMessage .= "Key file for table is currupt.";
       break;

    case 1035:
       $dbaMessage .= "Old key file for table '%-.64s'; Repair it!";
       break;

    case 1036:
       $dbaMessage .= "Table '%-.64s' is read only";
       break;

    case 1037:
       $dbaMessage .= "Out of memory.";
       break;

    case 1038:
       $dbaMessage .= "Out of sort memory. Increase daemon sort buffer size.";
       break;

    case 1039:
       $dbaMessage .= "Unexpected eof found when reading file '%-.64s' (errno: %d)";
       break;

    case 1040:
       $dbaMessage .= "Too many connections.";
       break;

    case 1041:
       $dbaMessage .= "Out of memory;  Check if mysqld or some other process uses all 
available memory. If not you may have to use
'ulimit' to allow mysqld to use more memory or you can add more swap space";
       break;

    case 1042:
       $dbaMessage .= "Can't get hostname for your address";
       break;

    case 1043:
       $dbaMessage .= "Bad handshake";
       break;

    case 1044:
         $dbErrorMessage .= "\nYou do not have the proper access to the database.";
       break;

    case 1045:
       $dbaMessage .= "Access denied for user: '%-.32s@%-.64s' (Using password: %s)";
         $dbErrorMessage .= "\nYou have entered an incorrect password.";
       break;

    case 1046:
       $dbaMessage .= "The database was not selected.";
       break;

    case 1047:
       $dbaMessage .= "No command was given.";
       break;

    case 1048:
       $dbaMessage .= "Column cannot be left blank";
       break;

    case 1049:
       $dbaMessage .= "Unknown database '%-.64s'";
       break;

    case 1050:
       $dbaMessage .= "Table '%-.64s' already exists";
       break;

    case 1051:
       $dbaMessage .= "Unknown table '%-.64s'";
       break;

    case 1052:
       $dbaMessage .= "Column: '%-.64s' in %-.64s is ambiguous";
       break;

    case 1053:
       $dbaMessage .= "Server shutdown in progress";
       break;

    case 1054:
       $dbaMessage .= "Error retrieving your data.  Wrong column was requested";
       break;

    case 1055:
       $dbaMessage .= "'%-.64s' isn't in GROUP BY";
       break;

    case 1056:
       $dbaMessage .= "Can't group on '%-.64s'";
       break;

    case 1057:
       $dbaMessage .= "Statement has sum functions and columns in same statement";
       break;

    case 1058:
       $dbaMessage .= "Column count doesn't match value count";
       break;

    case 1059:
       $dbaMessage .= "Identifier name '%-.100s' is too long";
       break;

    case 1060:
       $dbaMessage .= "Duplicate column name '%-.64s'";
       break;

    case 1061:
       $dbaMessage .= "Duplicate key name '%-.64s'";
       break;

    case 1062:
       $dbaMessage .= "Duplicate entry '%-.64s' for key %d";
         $dbErrorMessage .= "  An entry with this information already exists in the 
database.";
       break;

    case 1063:
       $dbaMessage .= "Incorrect column specifier for column '%-.64s'";
       break;

    case 1064:
       $dbaMessage .= "%s near '%-.80s' at line %d";
       break;

    case 1065:
       $dbaMessage .= "Query was empty";
       break;

    case 1066:
       $dbaMessage .= "Not unique table/alias: '%-.64s'";
       break;

    case 1067:
       $dbaMessage .= "Invalid default value for '%-.64s'";
       break;

    case 1068:
       $dbaMessage .= "Multiple primary key defined";
       break;

    case 1069:
       $dbaMessage .= "Too many keys specified. Max %d keys allowed";
       break;

    case 1070:
       $dbaMessage .= "Too many key parts specified. Max %d parts allowed";
       break;

    case 1071:
       $dbaMessage .= "Specified key was too long. Max key length is %d";
       break;

    case 1072:
       $dbaMessage .= "Key column '%-.64s' doesn't exist in table";
       break;

    case 1073:
       $dbaMessage .= "BLOB column '%-.64s' can't be used in key specification with 
the used table type";
       break;

    case 1074:
       $dbaMessage .= "Too big column length for column '%-.64s' (max = %d). Use BLOB 
instead";
       break;

    case 1075:
       $dbaMessage .= "Incorrect table definition; There can only be one auto column 
and it must be defined as a key";
       break;

    case 1076:
       $dbaMessage .= "%s: ready for connections\n";
       break;

    case 1077:
       $dbaMessage .= "%s: Normal shutdown\n";
       break;

    case 1078:
       $dbaMessage .= "%s: Got signal %d. Aborting!\n";
       break;

    case 1079:
       $dbaMessage .= "%s: Shutdown Complete\n";
       break;

    case 1080:
       $dbaMessage .= "%s: Forcing close of thread %ld  user: '%-.32s'\n";
       break;

    case 1081:
       $dbaMessage .= "Can't create IP socket";
       break;

    case 1082:
       $dbaMessage .= "Table '%-.64s' has no index like the one used in CREATE INDEX. 
Recreate the table";
       break;

    case 1083:
       $dbaMessage .= "Field separator argument is not what is expected. Check the 
manual";
       break;

    case 1084:
       $dbaMessage .= "You can't use fixed rowlength with BLOBs. Please use 'fields 
terminated by'.";
       break;

    case 1085:
       $dbaMessage .= "The file '%-.64s' must be in the database directory or be 
readable by all";
       break;

    case 1086:
       $dbaMessage .= "File '%-.80s' already exists";
       break;

    case 1087:
       $dbaMessage .= "Records: %ld  Deleted: %ld  Skipped: %ld  Warnings: %ld";
       break;

    case 1088:
       $dbaMessage .= "Records: %ld  Duplicates: %ld";
       break;

    case 1089:
       $dbaMessage .= "Incorrect sub part key. The used key part isn't a string or the 
used length is longer than the key part";
       break;

    case 1090:
       $dbaMessage .= "You can't delete all columns with ALT TABLE. Use DROP TABLE 
instead";
       break;

    case 1091:
       $dbaMessage .= "Can't DROP '%-.64s'. Check that column/key exists";
       break;

    case 1092:
       $dbaMessage .= "Records: %ld  Duplicates: %ld  Warnings: %ld";
       break;

    case 1093:
       $dbaMessage .= "INSERT TABLE '%-.64s' isn't allowed in FROM table list";
       break;

    case 1094:
       $dbaMessage .= "Unknown thread id: %lu";
       break;

    case 1095:
       $dbaMessage .= "You are not owner of thread %lu";
       break;

    case 1096:
       $dbaMessage .= "No tables used";
       break;

    case 1097:
       $dbaMessage .= "Too many strings for column %-.64s and SET";
       break;

    case 1098:
       $dbaMessage .= "Can't generate a unique log-filename %-.64s.(1-999)\n";
       break;

    case 1099:
       $dbaMessage .= "Table '%-.64s' was locked with a READ lock and can't be 
updated";
       break;

    case 1100:
       $dbaMessage .= "Table '%-.64s' was not locked with LOCK TABLES";
       break;

    case 1101:
       $dbaMessage .= "BLOB column '%-.64s' can't have a default value";
       break;

    case 1102:
       $dbaMessage .= "Incorrect database name '%-.100s'";
       break;

    case 1103:
       $dbaMessage .= "Incorrect table name '%-.100s'";
       break;

    case 1104:
       $dbaMessage .= "The SELECT would examine too many records and probably take a 
very long time. Check your WHERE and use SET
OPTION SQL_BIG_SELECTS=1 if the SELECT is ok";
       break;

    case 1105:
       $dbaMessage .= "Unknown error";
       break;

    case 1106:
       $dbaMessage .= "Unknown procedure '%-.64s'";
       break;

    case 1107:
       $dbaMessage .= "Incorrect parameter count to procedure '%-.64s'";
       break;

    case 1108:
       $dbaMessage .= "Incorrect parameters to procedure '%-.64s'";
       break;

    case 1109:
       $dbaMessage .= "Unknown table '%-.64s' in %-.32s";
       break;

    case 1110:
       $dbaMessage .= "Column '%-.64s' specified twice";
       break;

    case 1111:
       $dbaMessage .= "Invalid use of group function";
       break;

    case 1112:
       $dbaMessage .= "Table '%-.64s' uses an extension that doesn't exist in this 
MySQL version";
       break;

    case 1113:
       $dbaMessage .= "A table must have at least 1 column";
       break;

    case 1114:
       $dbaMessage .= "The table '%-.64s' is full";
       break;

    case 1115:
       $dbaMessage .= "Unknown character set: '%-.64s'";
       break;

    case 1116:
       $dbaMessage .= "Too many tables. MySQL can only use %d tables in a join";
       break;

    case 1117:
       $dbaMessage .= "Too many columns";
       break;

    case 1118:
       $dbaMessage .= "Too big row size. The maximum row size, not counting BLOBs, is 
%d. You have to change some fields to BLOBs";
       break;

    case 1119:
       $dbaMessage .= "Thread stack overrun:  Used: %ld of a %ld stack.  Use 'mysqld 
-O thread_stack=#' to specify a bigger stack if
needed";
       break;

    case 1120:
       $dbaMessage .= "Cross dependency found in OUT JOIN.  Examine your ON 
conditions";
       break;

    case 1121:
       $dbaMessage .= "Column '%-.64s' is used with UNIQUE or INDEX but is not defined 
as NOT NULL";
       break;

    case 1122:
       $dbaMessage .= "Can't load function '%-.64s'";
       break;

    case 1123:
       $dbaMessage .= "Can't initialize function '%-.64s'; %-.80s";
       break;

    case 1124:
       $dbaMessage .= "No paths allowed for shared library";
       break;

    case 1125:
       $dbaMessage .= "Function '%-.64s' already exist";
       break;

    case 1126:
       $dbaMessage .= "Can't open shared library '%-.64s' (errno: %d %-.64s)";
       break;

    case 1127:
       $dbaMessage .= "Can't find function '%-.64s' in library'";
       break;

    case 1128:
       $dbaMessage .= "Function '%-.64s' is not defined";
       break;

    case 1129:
       $dbaMessage .= "Host '%-.64s' is blocked because of many connection errors.  
Unblock with 'mysqladmin flush-hosts'";
       break;

    case 1130:
       $dbaMessage .= "Host '%-.64s' is not allowed to connect to this MySQL server";
       break;

    case 1131:
       $dbaMessage .= "You are using MySQL as an anonymous users and anonymous users 
are not allowed to change passwords";
       break;

    case 1132:
       $dbaMessage .= "You must have privileges to update tables in the mysql database 
to be able to change passwords for others";
       break;

    case 1133:
       $dbaMessage .= "Can't find any matching row in the user table";
       break;

    case 1134:
       $dbaMessage .= "Rows matched: %ld  Changed: %ld  Warnings: %ld";
       break;

    case 1135:
       $dbaMessage .= "Can't create a new thread (errno %d). If you are not out of 
available memory, you can consult the manual for
a possible OS-dependent bug";
       break;

    case 1136:
       $dbaMessage .= "Column count doesn't match value count at row %ld";
       break;

    case 1137:
       $dbaMessage .= "Can't reopen table: '%-.64s'";
       break;

    case 1138:
       $dbaMessage .= "Invalid use of NULL value";
       break;

    case 1139:
       $dbaMessage .= "Got error '%-.64s' from regexp";
       break;

    case 1140:
       $dbaMessage .= "Mixing of GROUP columns (MIN(), MAX(), COUNT()...) with no 
GROUP columns is illegal if there is no GROUP BY
clause";
       break;

    case 1141:
       $dbaMessage .= "There is no such grant defined for user '%-.32s' on host 
'%-.64s'";
       break;

    case 1142:
       $dbaMessage .= "%-.16s command denied to user: '%-.32s@%-.64s' for table 
'%-.64s'";
       break;

    case 1143:
       $dbaMessage .= "%-.16s command denied to user: '%-.32s@%-.64s' for column 
'%-.64s' in table '%-.64s'";
       break;

    case 1144:
       $dbaMessage .= "Illegal GRANT/REVOKE command. Please consult the manual which 
privileges can be used.";
       break;

    case 1145:
       $dbaMessage .= "The host or user argument to GRANT is too long";
       break;

    case 1146:
       $dbaMessage .= "Table '%-.64s.%-.64s' doesn't exist";
       break;

    case 1147:
       $dbaMessage .= "There is no such grant defined for user '%-.32s' on host 
'%-.64s' on table '%-.64s'";
       break;

    case 1148:
       $dbaMessage .= "The used command is not allowed with this MySQL version";
       break;

    case 1149:
       $dbaMessage .= "There is an error with the SQL syntax.";
       break;

    case 1150:
       $dbaMessage .= "Delayed insert thread couldn't get requested lock for table 
%-.64s";
       break;

    case 1151:
       $dbaMessage .= "Too many delayed threads in use";
       break;

    case 1152:
       $dbaMessage .= "Aborted connection %ld to db: '%-.64s' user: '%-32s' (%-.64s)";
       break;

    case 1153:
       $dbaMessage .= "Got a packet bigger than 'max_allowed_packet'";
       break;

    case 1154:
       $dbaMessage .= "Got a read error from the connection pipe";
       break;

    case 1155:
       $dbaMessage .= "Got an error from fcntl()";
       break;

    case 1156:
       $dbaMessage .= "Got packets out of order";
       break;

    case 1157:
       $dbaMessage .= "Couldn't uncompress communication packet";
       break;

    case 1158:
       $dbaMessage .= "Got an error reading communication packets";
       break;

    case 1159:
       $dbaMessage .= "Got timeout reading communication packets";
       break;

    case 1160:
       $dbaMessage .= "Got an error writing communication packets";
       break;

    case 1161:
       $dbaMessage .= "Got timeout writing communication packets";
       break;

    case 1162:
       $dbaMessage .= "Result string is longer than max_allowed_packet";
       break;

    case 1163:
       $dbaMessage .= "The used table type doesn't support BLOB/TEXT columns";
       break;

    case 1164:
       $dbaMessage .= "The used table type doesn't support AUTO_INCREMENT columns";
       break;

    case 1165:
       $dbaMessage .= "INSERT DELAYED can't be used with table '%-.64s', because it is 
locked with LOCK TABLES";
       break;

    case 1166:
       $dbaMessage .= "Incorrect column name '%-.100s'";
       break;

    case 1167:
       $dbaMessage .= "The used table handler can't index column '%-.64s'";
       break;

    case 1168:
       $dbaMessage .= "All tables in the MERGE table are not identically defined";
       break;

    case 1169:
       $dbaMessage .= "Can't write, because of unique constraint, to table '%-.64s'";
       break;

    case 1170:
       $dbaMessage .= "BLOB column '%-.64s' used in key specification without a key 
length";
       break;

    case 1171:
       $dbaMessage .= "All parts of a PRIMARY KEY must be NOT NULL;  If you need NULL 
in a key, use UNIQUE instead";
       break;

    case 1172:
       $dbaMessage .= "Result consisted of more than one row";
       break;

    case 1173:
       $dbaMessage .= "This table type requires a primary key";
       break;

    case 1174:
       $dbaMessage .= "This version of MySQL is not compiled with RAID support";
       break;

    default:
       $sysError = exec( "perror $dbErrorNum" );
       $dbaMessage .= "Unknown Error.  Please contact the database administrator with 
$sysError.<br>";
       $dbaMessage .= "Error Number $dbErrorNum";
       break;

  }
  $dbaMessage .= "\n\nPlease contact the database administrator.";

  return $dbaMessage;

}



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to