Я хотел бы изменить этот запрос MySQL, чтобы вставить строку, только если она не существует. В противном случае я хотел бы обновить существующую строку.
<?php $query = mysql_query("UPDATE hqfjt_email_history SET datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname'] WHERE emailformname = ['emailformname'] AND leadname = ['leadname']") or die(mysql_error()); ?>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ EDIT >>
Правильно ли это?
INSERT INTO hqfjt_email_history datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname'] ON DUPLICATE KEY UPDATE hqfjt_email_history SET datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname'] WHERE emailformname = ['emailformname'] AND leadname = ['leadname']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
Я пробовал выше и получил ошибку: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'dateent = [' dateent '], emailformname = [' emailformname '], leadname = [' leadname '' в строке 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
ОБНОВИТЬ ! Хорошо, я пробовал это, и он создает запись в порядке:
Если я это сделаю, ничего не происходит, ничего не обновляется или не создается ???? :
<?php $query = mysql_query(" INSERT INTO hqfjt_email_history (id, leadname, emailformname, datesent) VALUES ('$_POST[id]','$_POST[leadname]','$_POST[emailformname]','$_POST[datesent]') ON DUPLICATE KEY UPDATE hqfjt_email_history (datesent) VALUES ('$_POST[datesent]') WHERE id = '$_POST[id]'"); ?>
Да, используйте INSERT INTO ... ON DUPLICATE KEY UPDATE
синтаксис.
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Вам понадобится ключ, определенный в таблице типов UNIQUE
или PRIMARY KEY
.
Также ЗАМЕНИТЬ .
Которая обновит существующую строку или создаст новую, если она не существует, также синтаксис похож на INSERT
.
Он делает именно то, что INSERT ... ON DUPLICATE KEY UPDATE
делает, но я думаю, что этот подход более изящный.
Да, используйте ON DUPLICATE KEY UPDATE
для этого. Вот пример:
INSERT INTO <table> (<field1>, <field2>) VALUES (<value1>, <value2>) ON DUPLICATE KEY UPDATE <field2> = 'update CONTENT';
Важным является первичный ключ (подчеркнутый в таблице phpMyAdmin).
прочитайте этот URL
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
проверьте базу данных по электронной почте и имя