| Insert with PHP Save Record Twice [message #1583] |
Fri, 10 August 2007 08:44  |
RationalRabbit Messages: 4 Registered: August 2007 Location: Seattle, Washington |
Junior Member |
|
|
MySql 4.1.15 & 5.0 PHP 4.4.4 & 5.1.6
I have a simple self-contained form (posting to itself). When I insert a new record in the database, it is saving it twice.
I have set up the same database from scratch on two different servers with two different versions of MySQL, and had the same results. I have written this code several different ways, as well as separating the HTML and the PHP processing into two separate files, all still with the same results. I have taken the code down to bare bones (4 fields with no validation, etc.) and I still have the same results.
This doesn't seem to be a known bug, and with several web searches on the subject, I have run into only a few other people with the same problem. So far, no resolves.
Here is the code in a nut shell:
<?PHP
if ($_POST['process'] == 1)
{
Place values from the POST variables back to regular variables and perform some simple validation
Create error messages for fields that do not validate
Set error variable to true if any fields do not validate
if all fields validate (error variable is false)
{
if (!$connect = mysql_connect($HOST, $USER, $PASSWORD))
{
echo ("Error: Did not connect to database!");
}
else
{
mysql_select_db($DBName) or die ('Unable to select database!');
$SaveIt = "INSERT INTO CheckList (NameFirst, NameMid, NameLast) VALUES ('$NameFirst', '$NameMid', '$NameLast')";
if(mysql_query($SaveIt))
{
echo('<div>Your Data Has Been Saved </div>');
clear($_POST);
}
else
{
echo('<div> There was an error in processing the data </div>');
}
}
}
else // nothing has been submitted yet
{
set variables for form
}
}
?>
<html>
Print top of page
<? Print any error messages if fields did not validate ?>
<form name="NewEmpCheck" method="post" action="newemployee.php"> // This form, of course
input fields, ending with:
<input type="hidden" name="process" value="1"></input>
<input type="submit" name="Submit" value="Submit"></input>
<input type="reset" name="reset" value="Reset"></input>
</form>
</html>
Another way I have done this with the same results:
mysql_select_db($DBName) or die ('Unable to select database!');
$xQuery = "INSERT INTO CheckList set NameFirst = '$NameFirst', NameMid = '$NameMid', NameLast = '$NameLast', Position = '$Position'";
$SaveIt = mysql_query($xQuery);
if(!$SaveIt)
{
echo('<div>There was an error in processing the data </div>');
}
else
{
echo('<div> Your Data Has Been Saved</div>');
clear($_POST);
}
I'm really puzzled - especially since I have similar forms that work fine. I'm no PHP/MySQL guru, by any means. I have spent hours working on this code, and have pretty much come to conclusion that the error is not in the code - there must be something in how I set up the database.
The structure of the database is:

With the following indexes:
|
|
|
|
| Re: Insert with PHP Save Record Twice [message #1677 is a reply to message #1589 ] |
Thu, 23 August 2007 04:53   |
RationalRabbit Messages: 4 Registered: August 2007 Location: Seattle, Washington |
Junior Member |
|
|
After removing the auto-increment from the ID field, and moving the primary key to a different field, I was able to save two entries with no duplicates.
I then re-instigated the auto-increment on the ID field, and moved the primary key back to that field.
After doing the above, the problem went away.
I still have another database that I have not altered. I will do a more careful study of the problem with that database, and see if I can nail it down. When I do, I will post the results here. May be a number of days, though, as I am quite busy.
Thanks for your comments, Peter. I didn't think of checking logs.
|
|
|
|
| Re: Insert with PHP Save Record Twice [message #2047 is a reply to message #1583 ] |
Wed, 10 October 2007 05:56   |
RationalRabbit Messages: 4 Registered: August 2007 Location: Seattle, Washington |
Junior Member |
|
|
Certainly appears so, doesn't it!
Not even sure what I was doing there.
However, the code block above was still saving twice, and the problem went away when I made a change to the database.
I still have the original code and the original database set up on one server. I've been wanting to go back and check the whole thing out, but haven't had the time.
One of these days, I will, and post a followup.
Thanks for the observation, Hui!
[Updated on: Wed, 10 October 2007 06:07]
|
|
|
|
|
| Re: Insert with PHP Save Record Twice [message #3326 is a reply to message #1583 ] |
Tue, 22 July 2008 14:31  |
RationalRabbit Messages: 4 Registered: August 2007 Location: Seattle, Washington |
Junior Member |
|
|
Unfortunately, no. And never had the problem again. But I still have the code and will take a look at it. Unfortunately, that may take a few days to get to, though. If you find the answer, would certainly appreciate knowing about it. If not, and I have not replied to this by the 28th, feel free to prompt me.
There was something odd about this. I still don't think it was in the code, but I'll need to go back and refresh my memory.
[Updated on: Tue, 22 July 2008 14:34]
|
|
|