Luie, > Wouldn't replace change all the entries in your table row, same effect as update? > I believe the question is how to test which entry in a form has a new value and >replace/update only that value in the table. > If I have a form... > > ______________________________ > | Employee Record Update | > | | > |ID No: 1234 | > |Name: _____________________| > |Address: _____________________| > |Status: Married | > | | > | Submit | > ------------------------------ > > If I have this table... > _________________________________ > |idno name address status| > |---------------------------------| > |1234 Peter 45 street Single| > |_________________________________| > > Which means I only want to replace the status and the name and address remains the >same. > How do you test w/c entries in the form have new values and change only those >entries in the table? > > Peter, this is basically what your asking, right? > I actually need to figure this one out myself so I would appreciate any info.
Do not use REPLACE if the table uses an AUTO_INCREMENT id, because if you do, any other tables linking into the id column will need to be changed/become dislocated. Even if this is not the case, under these circumstances a REPLACE is two db operations (DELETE followed by INSERT) and should be 'costed' accordingly. In order to populate the form you must have first performed a SELECT to retrieve the data from the db. So from there you can figure out what the data used to be - if you want/need to. You already have/send the existing data values in/to the form (and can have it return form values as normal, and include the 'original values' in invisible fields - if you have to go that far). When the form response comes back you have two choices: 1 PHP: use PHP to compare the ex-db values and the values returned from the form, then dynamically construct a precise UPDATE statement (tailoring the SET clauses to the requisite column name and data value pairs). This is a bit fiddly - and becomes more so as the number of form fields increases. 2 MySQL: use the intelligence of the MySQL UPDATE command (RTFM: MySQL only changes those values which need to be changed) and issue a command which appears to UPDATE every possible-form-affected column (regardless of whether is needs to be updated - according to 'form-thinking', because MySQL will decide for you and do the 'database-thinking') Regards, =dn > >What about REPLACE? > > > >http://www.mysql.com/doc/R/E/REPLACE.html > > > >'REPLACE works exactly like INSERT, except that if an old record in the > >table has the same value as a new record on a unique index, the old record > >is deleted before the new record is inserted' > > > > >> > >> Hi, > >> > >> Can the UPDATE statement have conditional check embedded in it? I > >> have a page that displays a record (in a FORM format) that the user can > >> change the information on each column. I want to check each column and > >> see which has been changed and update the table for entries that were > >> changed only. > >> > >> for each column data { > >> if column is changed > >> then update; > >> else > >> do nothing; > >> } > >> > >> Maybe I am making this too complicated than it needs and just go ahead > >> and update all of the columns regardless with the new values, regardless > >> they are actually different or not. > >> > >> Thanks in advance, > >> -Peter --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php