Задача такая: удалить строки из базы и файлы с именем которое хранится в этих строках.
/**
* Gallery removal
* Удаление галереи
*/
if($delete)
{
$res3 = mysqlQuery("SELECT `fname`
FROM `images`
WHERE `aid`=".(int)$POST['value3']
);
while ($row = mysql_fetch_assoc($res3))
{
unlink(IRB_ROOT . '/uploads/galleries/' . $row['fname']);
unlink(IRB_ROOT . '/uploads/galleries/preview/small_' . $row['fname']);
}
mysqlQuery("DELETE FROM `images`
WHERE `aid`=". (int)$POST['value3']
);
mysqlQuery("DELETE FROM `galleries`
WHERE `id` = ". (int)$POST['value3']
);
reDirect();
}
Этот код работает, но мне интересно, возможно это сделать без запроса SELECT, другими словами: может есть функция которая при удалении возвращает массив удаленных данных?
Спустя 29 минут, 5 секунд (24.01.2011 - 16:25) Renden написал(а):
Evilsoul
Насколько я знаю такой функции нет, есть 2 вариата удаления:
1 DELETE - построчное удаление с возвращением количества удаленных записей
2 TRUNCATE - удяляет таблицу а потом восоздает, ничего не возвращая.
Больше вроде вариантов и нет..
Насколько я знаю такой функции нет, есть 2 вариата удаления:
1 DELETE - построчное удаление с возвращением количества удаленных записей
2 TRUNCATE - удяляет таблицу а потом восоздает, ничего не возвращая.
Больше вроде вариантов и нет..

Спустя 6 минут, 17 секунд (24.01.2011 - 16:32) Evilsoul написал(а):
Renden
Да, то что количество вернуть можно я знаю, но мне нужно именно имя файла вытащить из столбца `fname`.
Да, то что количество вернуть можно я знаю, но мне нужно именно имя файла вытащить из столбца `fname`.
Спустя 37 минут, 23 секунды (24.01.2011 - 17:09) linker написал(а):
Все зависит от того, как ты хранишь файлы, т.е. какие имена ты им присваиваешь. Можно сделать так, что SELECT не понадобится.
Спустя 3 минуты, 1 секунда (24.01.2011 - 17:12) Evilsoul написал(а):
linker
хотелось бы что бы это не имело значения...
на записи обрабатываю mysql_escape_string() на выводе htmlspecialchars().
ну а в принципе думаю при записи сделать проверку и записывать только имена на латинице, цифры, тире, подчеркивание.
хотелось бы что бы это не имело значения...
на записи обрабатываю mysql_escape_string() на выводе htmlspecialchars().
ну а в принципе думаю при записи сделать проверку и записывать только имена на латинице, цифры, тире, подчеркивание.
Спустя 5 минут, 3 секунды (24.01.2011 - 17:17) linker написал(а):
Тогда SELECT твой друг.
Спустя 10 минут, 21 секунда (24.01.2011 - 17:27) Evilsoul написал(а):
Жаль, но всё же спасибо.
Спустя 4 часа, 44 минуты, 19 секунд (24.01.2011 - 22:12) Evilsoul написал(а):
И + за активную помощь

Спустя 33 минуты, 22 секунды (24.01.2011 - 22:45) sergeiss написал(а):
Цитата (Evilsoul @ 24.01.2011 - 16:56) |
может есть функция которая при удалении возвращает массив удаленных данных? |
Есть такая возможность :) Но только в PostgreSQL.
DELETE ...... RETURNING *
UPDATE ...... RETURNING *
INSERT ....... RETURNING *
Вместо звездочки можно указать список колонок, которые нас интересуют - аналогично списку колонок в селекте.
Спустя 2 часа, 51 минута, 38 секунд (25.01.2011 - 01:37) Evilsoul написал(а):
Интересно, начал искать и нашел, но оч. мало, в mysql и oracle есть функция RETURN() но действие и как использовать я так и не понял ибо описания оч. мало и без примеров..(
А где вообще можно глянуть нормальную опись баз, возможностей желательно в сравнении друг с другом.
А где вообще можно глянуть нормальную опись баз, возможностей желательно в сравнении друг с другом.
Спустя 8 часов, 35 минут, 1 секунда (25.01.2011 - 10:12) linker написал(а):
В MySQL - RETURN используется онли в хранимых процедурах, насколько мне известно.
Спустя 10 минут, 59 секунд (25.01.2011 - 10:23) Evilsoul написал(а):
эээх, а я уж было понадеялся...
Спустя 6 часов, 35 минут, 52 секунды (25.01.2011 - 16:59) Evilsoul написал(а):
Ребят, а вот эту часть:
можно сделать одним запросом?
mysqlQuery("DELETE FROM `images`
WHERE `aid`=". (int)$POST['value3']
);
mysqlQuery("DELETE FROM `galleries`
WHERE `id` = ". (int)$POST['value3']
можно сделать одним запросом?
_____________
Кто хочет, ищет возможности, кто не хочет - причины. /_ К. Маркс
Истенно велик тот человек который сумел овладеть своим временем. /_Гесиод VIII-VII вв. до Р. Х.
Медлительный непрерывно борится с бедами всю жизнь. /_Гесиод VIII-VII вв. до Р. Х.
Для того что бы увидеть радугу нужно пережить дождь.
Женщины: Хочется чего-то красного но синего.