Well the first thing to do would be to look at the output of the mysql_error() function in PHP. This function will provide the textual error message from the MySQL server, which may shed some light on the problem. Another recommendation is to send this error message, along with any relevant information, to yourself with the mail() PHP function when an error is encountered. This may help identify trends.
One area to watch for is users violating primary keys or UNIQUE indexes. Before inserting the row, check and make sure the row is truly unique, or catch the error and ask the user for new information.
This was first published in November 2004