Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.09.2019, 15:07   #1
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 88
Репутация: 10
По умолчанию SQL запрос в php - запрос в базу данных так, чтобы еще возвращалось значение, сколько строк затронуто

Здравствуйте, такой вопрос, возможно ли сделать запрос в базу данных так, чтобы еще возвращалось значение, сколько строк затронуто. Вот phpmyadmin такое есть.
Мне это нужно для того, что если не выполняется update делать insert.
Спасибо за внимание=)
volni вне форума   Ответить с цитированием
Старый 12.09.2019, 15:13   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

можно.
смотрите mysqli_affected_rows()
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 12.09.2019, 15:19   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,992
Репутация: 6725
По умолчанию

Цитата:
Сообщение от volni Посмотреть сообщение
если не выполняется update делать insert
в mysql есть еще и синтаксические возможности для таких целей: INSERT ... ON DUPLICATE KEY UPDATE и REPLACE
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 12.09.2019, 16:32   #4
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 88
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
в mysql есть еще и синтаксические возможности для таких целей: INSERT ... ON DUPLICATE KEY UPDATE и REPLACE
Но если я верно понимаю, update выполняется даже когда ничего не подходит условию where и просто возвращает, что было обработано 0 строк.
volni вне форума   Ответить с цитированием
Старый 12.09.2019, 16:33   #5
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 88
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
в mysql есть еще и синтаксические возможности для таких целей: INSERT ... ON DUPLICATE KEY UPDATE и REPLACE
и можно ли об этом немного подробней или ссылочку?=)
volni вне форума   Ответить с цитированием
Старый 12.09.2019, 16:59   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

Цитата:
Сообщение от volni Посмотреть сообщение
и можно ли об этом немного подробней или ссылочку?=)
шутите?
первая же ссылка в гугле:
https://dev.mysql.com/doc/refman/8.0...duplicate.html
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 12.09.2019, 17:07   #7
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 88
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
шутите?
первая же ссылка в гугле:
https://dev.mysql.com/doc/refman/8.0...duplicate.html
да нет, я просто не очень понимаю, как это поможет моему вопросу=)
volni вне форума   Ответить с цитированием
Старый 12.09.2019, 17:10   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

Цитата:
Сообщение от volni Посмотреть сообщение
да нет, я просто не очень понимаю, как это поможет моему вопросу=)
задаёте ОДНУ команду
в ней пишете вставку новых записей и в ней же указываете, что делать, если такие записи уже есть (и сделать им UPDATE нужных полей)
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 12.09.2019, 17:13   #9
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 88
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
задаёте ОДНУ команду
в ней пишете вставку новых записей и в ней же указываете, что делать, если такие записи уже есть (и сделать им UPDATE нужных полей)
так мне нужно немного другое: если по условию, которое указано в where, update не применяется нигде, то делать insert с этими данными.
volni вне форума   Ответить с цитированием
Старый 12.09.2019, 17:42   #10
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

Цитата:
Сообщение от volni Посмотреть сообщение
так мне нужно немного другое: если по условию, которое указано в where, update не применяется нигде, то делать insert с этими данными.
Это Вам только кажется.

Вы рассмотрите конкретный пример.
вот, скажем, даны три строчки
param
1
2
3
вы делаете UPDATE для строк с param (1,7,9)
очевидно, что нужно сделать UPDATE одной строке и добавить 2 строки c param 7 и 9
Так?

Вот один INSERT и решает эту задачу.

а с вашим подходом, делаете Вы update ... where param in (1,7,9)
вам возвращается значение UPDATE 1 record
дальше что Вы делать будете?

если я не прав - приведите пример.


и если я не прав, тогда вообще не понятно, в чём вопрос-то
Цитата:
Сообщение от volni Посмотреть сообщение
так мне нужно немного другое: если по условию, которое указано в where, update не применяется нигде, то делать insert с этими данными.
Вам же функцию mysqli_affected_rows() показали. Используйте её
Код:
UPDATE .... 
IF mysqli_affected_rows()=0 Then
     INSERT ....

Последний раз редактировалось Serge_Bliznykov; 12.09.2019 в 17:45.
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать,чтобы запрашивалось сколько вводить строк. наследование класса Евгения Е Общие вопросы C/C++ 7 15.12.2014 14:58
помогите создать запрос чтобы высветился в Делфи galiya123 Помощь студентам 1 26.05.2014 16:19
Как сделать, чтобы DOS выдавал запрос int 21 по русски zla9_kolu4ka Assembler 3 11.10.2013 11:07
как выполнить sql запрос в базу mysql по нажатию клавиши в php undead92 PHP 1 06.07.2012 20:17
SQL запрос внесения картинки в базу Darcangel БД в Delphi 5 11.01.2012 09:23


00:01.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.