Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

можно.
смотрите mysqli_affected_rows()
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2019, 14:19   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

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

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

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

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

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

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

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

Цитата:
Сообщение от 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 в 16:45.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать,чтобы запрашивалось сколько вводить строк. наследование класса Евгения Е Общие вопросы C/C++ 7 15.12.2014 13:58
помогите создать запрос чтобы высветился в Делфи galiya123 Помощь студентам 1 26.05.2014 16:19
Как сделать, чтобы DOS выдавал запрос int 21 по русски zla9_kolu4ka Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 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