Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   MySQL (Delete) (https://forum.antichat.xyz/showthread.php?t=49161)

RaiDeRz 16.09.2007 13:37

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...

RaiDeRz 16.09.2007 14:20

И без count'а как-то можно? а то что-то нехочеться грузить сильно все это))
И так от мускула на сервер 80% нагрузки идет

guest3297 16.09.2007 14:26

чето не чего в гово ботше не лезет...
дай пример запроса.

RaiDeRz 16.09.2007 14:46

Вот пример:
Цитата:

DELETE FROM test WHERE type = '1'
Когда читал мануал по MySQL там вроде написано, что он в ответе должен дать кол-во удаленых рядов, но как его получить я незнаю, ведь там возможен вывод только таблиц через функции

Joker-jar 16.09.2007 14:50

PHP код:

          $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.

Kridan 16.09.2007 18:15

Цитата:

Оператор DELETE удаляет из таблицы table_name строки, удовлетворяющие заданным в where_definition условиям, и возвращает число удаленных записей.
Так что можно как при обычном INSERT вывести результат. (здаётся мне это будет первый элемент возвращаемого массива)

Цитата:

Если действительно необходимо знать число удаленных записей при удалении всех строк, и если допустимы потери в скорости, то можно использовать команду DELETE в следующей форме:
mysql> DELETE FROM table_name WHERE 1>0;


Время: 16:27