Announcement

Announcement Module
Collapse
No announcement yet.

Insert with PHP Save Record Twice

Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Insert with PHP Save Record Twice

    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:

    Your Data Has Been Saved
    '); clear($_POST); } else { echo('
    There was an error in processing the data
    '); } } } else // nothing has been submitted yet { set variables for form } }?> Print top of page
    // This form, of course input fields, ending with:


    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('
    There was an error in processing the data
    '); } else { echo('
    Your Data Has Been Saved
    '); 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:

  • #2
    Enable MySQL log and see which queries your application actually send and if it is single connection or different connections.

    Also looking in web server logs may help - may be for some reason you get 2 web requests instead of one.

    Comment


    • #3
      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.

      Comment


      • #4
        hi, it seems to me that you just executed this query twice.

        $SaveIt = mysql_query($xQuery);
        if(!$SaveIt)

        Cheers

        Hui

        Comment


        • #5
          Certainly appears so, doesn't it! eek:
          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!

          Comment


          • #6
            No Sweat! I had that exact problem before. That's why I could spot it instantly. cool:

            Cheers

            Hui

            Comment


            • #7
              Hi RationalRabbit.

              Did you ever find out more about the problem?
              It seems like I have the same problem.

              Comment


              • #8
                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.

                Comment

                • Working...
                  X