Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 69

Вставка новой записи или обновление существующей в случае ее наличия

13.11.2016, 15:40. Показов 599. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть HTML:
HTML5
1
2
3
4
5
6
7
8
9
<div class="input-group">
  <span class="input-group-addon">Type</span>
  <input type="text" name="type" class="form-control" placeholder="Premium type" aria-         describedby="basic-addon1" required>
</div>
 
<div class="input-group">
  <span class="input-group-addon">Sum</span>
  <input name="premium_sum" class="form-control" aria-describedby="basic-addon2" required>
</div>
Есть SQL запрос:
PHP
1
2
3
4
5
6
$type = $_POST['type'];
$premium_sum = $_POST['premium_sum'];
 
 
 
mysql_query("INSERT INTO `premium_size`(`type`, `premium_sum`) VALUES ('$type', '$premium_sum')");
Можно ли построить SQL запрос таким образом, что бы, если мы вводили в type уже существующее значение, то оно просто обновляло premium_sum, а иначе просто добавляло новую запись.. Или как это правильно сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2016, 15:40
Ответы с готовыми решениями:

Вставка или обновление в зависимости от наличия записи в БД
Доброго времени суток! Помогите пожалуйста, решить проблемку: Получаю данные из JSON файла, которые необходимо записать в БД. После...

Обновление существующей записи
Здравствуйте. :) Нужно делать запись в существующей в таблице в выбранной строке из &quot;Форма1&quot; в которую выводятся данные по...

Обновление в базе уже существующей записи
Здравствуйте, мне необходимо в базе данных обновить уже существующую запись, код набрала,но указывает ошибку в синтаксисе около ФИО, не...

12
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
13.11.2016, 15:43
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
Или как это правильно сделать?
Проверить с помощью SELECT запроса , есть ли запись. Если есть значит обнавить UPDATE запрос , а если нет то INSERT запрос.
0
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 69
13.11.2016, 16:18  [ТС]
SQL
1
2
3
4
5
6
7
$row = mysql_query("SELECT * FROM `premium_size`");
 
IF ($row['type']) {
    mysql_query("UPDATE premium_size SET premium_sum = $premium_sum");
} ELSE {
    mysql_query("INSERT INTO `premium_size`(`type`, `premium_sum`) VALUES ('$type', '$premium_sum')");
}
В итоге добавляет только новую запись. Что я не так делаю?
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
13.11.2016, 16:56
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
в type уже существующее значение
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
$row = mysql_query("SELECT * FROM `premium_size`");
А где вы тут проверяете именно что в поле type есть такое значение ?

Добавлено через 1 минуту
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
*
За вот это вообще руки отбивают, это надо использовать в крайних случаях , когда действительно нужно вывести все записи.
1
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 69
13.11.2016, 16:56  [ТС]
IF ($row['type'])
Я думал, что оно так проверять будет, или же IF ($row['type'] = $type), но к успехам не приводит
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
13.11.2016, 17:01
PHP
1
2
3
4
5
6
7
$row = mysql_query("SELECT `type` FROM `premium_size` WHERE `type`= '$type' ");
$num = mysql_num_rows($row);
if($num>0){
$_ = mysql_query("UPDATE `premium_size` SET `premium_sum` = '$premium_sum'");
}else{
$_ = mysql_query("INSERT INTO `premium_size`(`type`, `premium_sum`) VALUES ('$type', '$premium_sum')"); 
}
Так?

Добавлено через 2 минуты
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
IF ($row['type'] = $type)
Прочитайте вообще про знак равенства и присвоение и чем они отличаются , и что вообще возвращает mysql_query(); после mysql_query вот так делать как вы нельзя. он содержит Resource, а не массив.
1
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 69
13.11.2016, 17:17  [ТС]
Всё равно не работает..

PHP
1
2
3
4
5
6
7
$row = mysql_query("SELECT `type` FROM `premium_size` WHERE type = $type'");
 
    if ($row) {
        mysql_query("UPDATE premium_size SET premium_sum = '$premium_sum'");
    } else {
        mysql_query("INSERT INTO `premium_size` SET type = '$type', premium_sum = '$premium_sum'");
    }
Уже так сделал.. У меня в таблице имеется ещё id, может он влиять на работоспособность?
А то даже Ваш код скопировал, а не работает так, как нужно

А за равенство я знаю, просто не задумался даже в данной ситуации над этим)

Добавлено через 13 минут
PHP
1
2
3
4
5
6
7
8
9
$row = mysql_query("SELECT `type` FROM `premium_size` WHERE `type`= '$type' ");
 
    $num = mysql_num_rows($row);
    
    if($num > 0) {
        $_ = mysql_query("UPDATE `premium_size` SET `premium_sum` = '$premium_sum'");
    } else {
        $_ = mysql_query("INSERT INTO `premium_size`(`type`, `premium_sum`) VALUES ('$type', '$premium_sum')"); 
    }
Всё работает, только при UPDATE, новое значение присваивается каждому type, с любым именем
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
13.11.2016, 17:41
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
новое значение присваивается каждому type, с любым именем
добавить в update
SQL
1
WHERE `type`= '$type'
1
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 69
13.11.2016, 18:36  [ТС]
Может подскажете ещё, как сделать кнопку "Удалить", что бы она удаляла конкретную запись из таблицы..
Миниатюры
Вставка новой записи или обновление существующей в случае ее наличия  
0
13.11.2016, 19:58
 Комментарий модератора 
1 тема - 1 вопрос
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
13.11.2016, 22:29
Цитата Сообщение от StanislaU_3 Посмотреть сообщение
что бы она удаляла конкретную запись из таблицы..
как вариант(не самый лучший)
HTML5
1
<a href="file.php?del=1&id=1">удалить</a>
PHP
1
2
3
if(isset($_GET['del']) && $_GET['del'] == 1){
    //удаляем запись по id
}
Добавлено через 2 минуты
или вешаем онклик на кнопку. отправляем аяксом id на сервер. удаляем запись. на клиенте удаляем строку из таблицы.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
15.11.2016, 11:59
Интересно, а почему никто не предложил вариант с одним запросом и UNIQUE? Есть же INSERT ... ON DUPLICATE KEY UPDATE ...
2
15.11.2016, 12:52

Не по теме:

Во-во, тем более что формулировка вопроса явно подталкивала к этому ответу.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2016, 12:52
Помогаю со студенческими работами здесь

Проверка наличия записи в таблице и ее обновление
Здравствуйте. У меня проблема. Как сделать проверку Если в таблице user_item с char_id=$top есть item_type='4037' то он делает апдейт...

GridView + DetailsView c 2я каскадными DropDownList (вставка новой записи)
Имеется GridView, с ним связан через параметр DetailsView, в который имеются 2 DropDownList. У всех компонентов свои SqlDataSource,...

Возможна ли вставка новой записи в середину таблицы, а не добавление в конец?
Существует таблица - поле Счетчик и Текстовое поле (которое имеет хаотичные значение и сортировка его не имеет смысла). Записи отражаются в...

Вставка новой записи через форму на left join запросе
Здравствуйте! помогите пожалуйста решить такую проблему. Создаю split-форму для ввода и редактирования данных. Данные вносятся в одну...

Обновление tableview после добавление новой записи
Доброго времени суток. Выгружаю в tableview данные из таблицы nomenclatura. На форме 2 кнопки, первая добавляет запись прям в этом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru