Home » Performance » MySQL » Insert with PHP Save Record Twice
Insert with PHP Save Record Twice [message #1583] Fri, 10 August 2007 08:44 Go to previous message
RationalRabbit  is currently offline 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:
http://www.filerabbit.com/images/structure.jpg
With the following indexes:
http://www.filerabbit.com/images/structure2.jpg

Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic:Triggers
Next Topic:How to optimize this query?
Goto Forum:

  


Current Time: Fri Jul 10 07:01:25 EDT 2009

Total time taken to generate the page: 0.02136 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 2.7.7.
Copyright ©2001-2007 FUD Forum Bulletin Board Software

MySQL is a trademark of Sun Microsystems.
InnoDB is a trademark of Oracle Corp.

Percona Performance Forums are a service of Percona, Inc.
Not affiliated with Sun Microsystems or Oracle Corp.