Как вставить данные в базу данных MySQL, если их не существует и обновить в противном случае
Стандартный подход с проверкой существования записи:
$result = mysql_query("SELECT `uid`, `text` FROM `t_userinfo` WHERE `uid`='$uid'");
if (mysql_num_rows($result)>0) { // Если строка имеется, то обновляем
mysql_query("UPDATE `t_userinfo` SET `text`='$newtext' WHERE `uid`='$uid'");
} else { // Если строки нет, то добавляем новое значение в БД
mysql_query("INSERT INTO `t_userinfo` SET `text`='$newtext',`uid`='$uid'");
}
Немного муторно и производительность страдает из-за множества запросов.
Вставить или обновить данные в базе данных MySQL одним запросом
Если таблица имеет уникальный ключ (PRIMARY KEY или UNIQUE) по полю uid, можно использовать один запрос:
mysql_query("INSERT INTO `t_userinfo` SET `text`='$newtext',`uid`='$uid' ON DUPLICATE KEY UPDATE `text`='$newtext'");
Сам MySQL код:
INSERT INTO `t_userinfo` SET `text`='some_text',`uid`='some_uid' ON DUPLICATE KEY UPDATE `text`='some_text';