Просмотр полной версии : MySQL (Delete)
Как узнать сколько было удалено записей в запросе?
Ничего толком ненашел только узнал что вообще должен выводиться ответ от комманды этой сколько удаленно, но как реализовать даже получение этого ответа я непонял ))
Joker-jar
16.09.2007, 13:54
Ты бы для начала сказал, на чем кодишь
inlanger
16.09.2007, 13:56
есть в PHPmyAdmin, то должен высветиться отчёт.
guest3297
16.09.2007, 14:06
Как узнать сколько было удалено записей в запросе?
Ничего толком ненашел только узнал что вообще должен выводиться ответ от комманды этой сколько удаленно, но как реализовать даже получение этого ответа я непонял ))
Все зависит от параметров запроса, вообще ты это средсвами mysql не посчитаешь, как вариант count(*) до и после и из 1 вычитаем 2...
И без count'а как-то можно? а то что-то нехочеться грузить сильно все это))
И так от мускула на сервер 80% нагрузки идет
guest3297
16.09.2007, 14:26
чето не чего в гово ботше не лезет...
дай пример запроса.
Вот пример: DELETE FROM test WHERE type = '1'
Когда читал мануал по MySQL там вроде написано, что он в ответе должен дать кол-во удаленых рядов, но как его получить я незнаю, ведь там возможен вывод только таблиц через функции
Joker-jar
16.09.2007, 14:50
$zapros = 'DELETE FROM test WHERE type = 1';
$result = @mysql_query($zapros);
$delnum = @mysql_result($result,0) ;
groundhog
16.09.2007, 15:00
Я так и не понял на чём ТС ведёт разработку, но если на 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.
Оператор DELETE удаляет из таблицы table_name строки, удовлетворяющие заданным в where_definition условиям, и возвращает число удаленных записей.
Так что можно как при обычном INSERT вывести результат. (здаётся мне это будет первый элемент возвращаемого массива)
Если действительно необходимо знать число удаленных записей при удалении всех строк, и если допустимы потери в скорости, то можно использовать команду DELETE в следующей форме:
mysql> DELETE FROM table_name WHERE 1>0;
groundhog
16.09.2007, 18:21
Kridan, насчёт insert ты не прав. Команды DML и DQL разные вещи, и не могут быть расчёсаны под одну гребёнку. Соответственно все интерфейсы предоставляют свои механизмы для работы с этими классами команд. Как я написал выше для PHP интерфейса mysql_*, есть специальная функция, которая для DML-команд возвращает актуальное число изменённых записей (mysql_affected_rows). В остальном - ты прав.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot