| 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:
|
|
|