Синтаксическая ошибка с IF EXISTS UPDATE ELSE INSERT

Я использую MySQL 5.1, размещенный у моего интернет-провайдера. Это мой запрос

mysql_query(" IF EXISTS(SELECT * FROM licensing_active WHERE title_1='$title_1') THEN BEGIN UPDATE licensing_active SET time='$time' WHERE title_1='$title_1') END ELSE BEGIN INSERT INTO licensing_active(title_1) VALUES('$title_1') END ") or die(mysql_error()); 

Ошибка

 ... check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT * FROM licensing_active WHERE title_1='Title1') THEN ' at line 1 

Моя фактическая задача связана с

 WHERE title_1='$title_1' AND title_2='$title_2' AND version='$version' ...ETC... 

но я уменьшил его, чтобы упростить решение проблемы

В моих поисках по этому поводу я продолжаю видеть ссылки на «ON DUPLICATE KEY UPDATE», но не знаю, что с этим делать.

Вот простое и простое решение, попробуйте.

 $result = mysql_query("SELECT * FROM licensing_active WHERE title_1 ='$title_1' "); if( mysql_num_rows($result) > 0) { mysql_query("UPDATE licensing_active SET time = '$time' WHERE title_1 = '$title_1' "); } else { mysql_query("INSERT INTO licensing_active (title_1) VALUES ('$title_1') "); } 

Это должно сделать трюк для вас:

 insert into licensing_active (title_1, time) VALUES('$title_1', '$time') on duplicate key update set time='$time' 

Предполагается, что title_1 – это уникальный столбец (принудительно используемый базой данных) в вашей таблице.

Способ, который insert... on duplicate пытается сначала вставить новую строку, но если вставка отклоняется, потому что ключ останавливает ее, она позволит вам обновлять определенные поля.

Синтаксис вашего запроса неверен. Оформить заказ http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

Используйте duplicate key syntax для достижения желаемого результата. См. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html.