Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
MySQL

Определить количество измененных и найденных строк в запросе

29.04.2015, 15:19. Показов 5611. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть запрос типа "UPDATE .. SET ... WHERE ..." после выполнения проверяю количество записанных строк "$mysqli->affected_rows". Вот тут то вся и проблема: если не найдено записей проходящих по условию возвращает 0, так же как и в случае когда найдены записи, но их изменять не нужно было. А как можно определить сколько было найдено и сколько изменено??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2015, 15:19
Ответы с готовыми решениями:

Сохранение измененных найденных данных на листе xl
Мое почтение всем форумчанам! хотелось бы реализовать такой момент. : 'поиск данных на листе xl Dim q As String, rx, R q =...

Подсчитать количество изменённых строк...
Условие: Дана матрица, состоящая из n строк и n столбцов или одномерные массивы из n элементов каждый.Составить алгоритм и программу для...

Определить среди найденных строк ту, для которой разность произведения и суммы максимальна
Составить программу, которая находит в матрице Q(k,l), k<12, l<14, все строки, произведение элементов которых больше суммы тех же...

8
Заблокирован
29.04.2015, 15:47
конструкция "UPDATE .. SET ... WHERE ..." ничего не ИЩЕТ, она просто изменяет строки подходящие по условию. Соответственно по выполнению ты можешь посмотреть сколько строк заменено с помощью("$mysqli->affected_rows").
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
так же как и в случае когда найдены записи, но их изменять не нужно было.
Поэтому этот вопрос поломал мне мозг. Если записи найдены то они и изменены!!!-понимаешь?
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
29.04.2015, 16:52  [ТС]
допустим таблица
ID Pole1
1 5
1 3
2 4
UPDATE .. SET Pole1=5 WHERE id = 1
найдено 2 записи изменена 1 !!!-понимаешь?

Добавлено через 1 минуту
а если UPDATE .. SET Pole1=4 WHERE id = 2
найдено 1 запись изменена 0 и $mysqli->affected_rows вернет 0
0
Заблокирован
29.04.2015, 17:00
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
найдено 2 записи изменена 1 !!!-понимаешь?
Нет. Это так не работает. Такому запросу не интересно чему равно Pole1 он просто изменяет 2 записи.
Это только в твоей голове представление что он изменил одну запись. Он изменил ДВЕ ЗАПИСИ!!!

Если тебе надо предварительно проверить сколько записей уже содержится в таблице то нужен второй запрос.
SQL
1
SELECT *FROM `mytable` WHERE `ID`= 1 AND `Pole1`= 5
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
29.04.2015, 17:02
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
найдено 2 записи изменена 1
Смотря как трактовать слово "изменена". Как изменение значения или как выполнение процесса UPDATE.
В некоторых СУБД в случае если хотим поменять значение на такое же, сессия не будет выполнять UPDATE, в некоторых - будет. Как конкретно в MySQL - не знаю.
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
29.04.2015, 17:21
Цитата Сообщение от Grossmeister Посмотреть сообщение
Как конкретно в MySQL - не знаю.
и правда, интересно.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ mysql -u root -D test2
Welcome TO the MariaDB monitor.  Commands END WITH ; OR \g.
Your MariaDB connection id IS 5
Server version: 10.0.17-MariaDB-log MariaDB Server
 
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab AND others.
 
TYPE 'help;' OR '\h' FOR help. TYPE '\c' TO clear the CURRENT INPUT statement.
MariaDB [test2]> CREATE TABLE tbl2(id INT PRIMARY KEY AUTO_INCREMENT, VALUE VARCHAR(20)) ENGINE=InnoDB;
Query OK, 0 ROWS affected (0.57 sec)
 
MariaDB [test2]> CREATE TABLE tbl1(id INT PRIMARY KEY AUTO_INCREMENT, VALUE VARCHAR(20)) ENGINE=MyISAM;
Query OK, 0 ROWS affected (0.07 sec)
 
MariaDB [test2]> INSERT INTO tbl1(VALUE) VALUES ('1'),('2'),('3');
Query OK, 3 ROWS affected (0.09 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
MariaDB [test2]> INSERT INTO tbl2(VALUE) VALUES ('1'),('2'),('3');
Query OK, 3 ROWS affected (0.11 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
MariaDB [test2]> UPDATE tbl1 SET VALUE=1 WHERE id=1;
Query OK, 0 ROWS affected (0.17 sec)
ROWS matched: 1  Changed: 0  Warnings: 0
 
MariaDB [test2]> UPDATE tbl2 SET VALUE=1 WHERE id=1;
Query OK, 0 ROWS affected (0.09 sec)
ROWS matched: 1  Changed: 0  Warnings: 0
 
MariaDB [test2]> UPDATE tbl1 SET VALUE=2 WHERE id=1;
Query OK, 1 ROW affected (0.00 sec)
ROWS matched: 1  Changed: 1  Warnings: 0
 
MariaDB [test2]> UPDATE tbl2 SET VALUE=2 WHERE id=1;
Query OK, 1 ROW affected (0.10 sec)
ROWS matched: 1  Changed: 1  Warnings: 0

Не по теме:

значние affected_rows показано после Changed, https://dev.mysql.com/doc/refm... -rows.html

0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
30.04.2015, 09:40  [ТС]
Ну вот, что значние "affected_rows = Changed" выяснили, теперь осталось понять как вытянуть matched???

Добавлено через 44 секунды
Trukl, Нет. Это так работает.
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
01.05.2015, 01:32
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
как вытянуть matched
SELECT .. FROM
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
05.05.2015, 12:58  [ТС]
после выполнения запроса в mysqli есть поле инфо, в котором есть результат запроса в стороковом представлении, тогда уже проще выбрать с него значение чем через "SELECT .. FROM"

$mysqli->info = (string) Rows matched: 1 Changed: 1 Warnings: 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2015, 12:58
Помогаю со студенческими работами здесь

Определить сумму элементов каждой строки матрицы и упорядочить номера строк по возрастанию значений найденных сумм
Помогите пожалуйста. Только учусь программировать в Eclipse Java. Дана квадратная матрица размером n x n, содержащая целые числа....

Определить сумму отрицательных элементов в каждой строке матрицы и упорядочить номера строк по возрастанию значений найденных сумм
Дана прямоугольная матрица размером N x M, содержащая целые числа. Определить сумму отрицательных элементов в каждой строке матрицы и...

Подсчитать количество строк в таблице в запросе
всем привет давно спрашивал но забыл ответ:) поэтому еще раз есть запрос " выбрать 1,2,3 поместить вт1 объединить ВСЕ ...

Получить среднее и количество строк в одном запросе
Доброго времени суток. Работая с базой выполняю следующие запросы: ADOQuery1.SQL.Add('SELECT avg(rez) FROM ' + sitaZapros + ' WHERE...

SQL неправильно предполагает количество строк в запросе
У меня есть две таблицы, одна с основными данными, а другая с кэшированными результатами. Мне нужно вычислять суммы по диапазонам дат и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru