
16.09.2007, 13:37
|
|
Участник форума
Регистрация: 05.04.2007
Сообщений: 123
С нами:
10052518
Репутация:
27
|
|
MySQL (Delete)
Как узнать сколько было удалено записей в запросе?
Ничего толком ненашел только узнал что вообще должен выводиться ответ от комманды этой сколько удаленно, но как реализовать даже получение этого ответа я непонял ))
|
|
|

16.09.2007, 13:54
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами:
10088966
Репутация:
646
|
|
Ты бы для начала сказал, на чем кодишь
|
|
|

16.09.2007, 13:56
|
|
Познавший АНТИЧАТ
Регистрация: 07.01.2007
Сообщений: 1,263
С нами:
10179806
Репутация:
702
|
|
есть в PHPmyAdmin, то должен высветиться отчёт.
|
|
|

16.09.2007, 14:06
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
С нами:
10459106
Репутация:
2996
|
|
Как узнать сколько было удалено записей в запросе?
Ничего толком ненашел только узнал что вообще должен выводиться ответ от комманды этой сколько удаленно, но как реализовать даже получение этого ответа я непонял ))
Все зависит от параметров запроса, вообще ты это средсвами mysql не посчитаешь, как вариант count(*) до и после и из 1 вычитаем 2...
|
|
|

16.09.2007, 14:20
|
|
Участник форума
Регистрация: 05.04.2007
Сообщений: 123
С нами:
10052518
Репутация:
27
|
|
И без count'а как-то можно? а то что-то нехочеться грузить сильно все это))
И так от мускула на сервер 80% нагрузки идет
|
|
|

16.09.2007, 14:26
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
С нами:
10459106
Репутация:
2996
|
|
чето не чего в гово ботше не лезет...
дай пример запроса.
|
|
|

16.09.2007, 14:46
|
|
Участник форума
Регистрация: 05.04.2007
Сообщений: 123
С нами:
10052518
Репутация:
27
|
|
Вот пример:
DELETE FROM test WHERE type = '1'
Когда читал мануал по MySQL там вроде написано, что он в ответе должен дать кол-во удаленых рядов, но как его получить я незнаю, ведь там возможен вывод только таблиц через функции
|
|
|

16.09.2007, 14:50
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами:
10088966
Репутация:
646
|
|
PHP код:
$zapros = 'DELETE FROM test WHERE type = 1';
$result = @mysql_query($zapros);
$delnum = @mysql_result($result,0) ;
|
|
|

16.09.2007, 15:00
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
С нами:
9999746
Репутация:
1318
|
|
Я так и не понял на чём ТС ведёт разработку, но если на PHP, то это всё элементарно:
<?php
mysql_pconnect("somehost", "someuser", "somepassword") or
die("Could not connect: " . mysql_error());
mysql_select_db("some_db") or
die("Could not select database: " . mysql_error());
mysql_query("DELETE FROM test WHERE type=1");
printf ("Records deleted: %d\n", mysql_affected_rows());
?>
Только будьте внимательны. Если запрос на удаление не содержал условия WHERE (удалялись все записи), то функция mysql_affected_rows() всегда возвращает 0.
|
|
|

16.09.2007, 18:15
|
|
Новичок
Регистрация: 02.06.2007
Сообщений: 24
С нами:
9969524
Репутация:
19
|
|
Оператор DELETE удаляет из таблицы table_name строки, удовлетворяющие заданным в where_definition условиям, и возвращает число удаленных записей.
Так что можно как при обычном INSERT вывести результат. (здаётся мне это будет первый элемент возвращаемого массива)
Если действительно необходимо знать число удаленных записей при удалении всех строк, и если допустимы потери в скорости, то можно использовать команду DELETE в следующей форме:
mysql> DELETE FROM table_name WHERE 1>0;
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|