Просмотр полной версии : Как удалить файлы которых нет в бд mysql?
Deathdreams
27.12.2009, 14:49
Бред какой-то.
Мб я не так понял конечно, но какая связь с удалением записей с мускуля и удалением файлов?
Ridikh на php - http://php.net/opendir, http://php.net/readdir. Получаете список всех файлов, сравниваете со списком хороших - остальные удаляете.
В дальнейшем удаляете по человечески, не только из базы, но и с диска
впринципе если имеется информация о файлах в бд то 1м запросом с поощью NOT IN можно справиться
POS_troi
27.12.2009, 21:39
unlink() Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Вот и обрабатывай ошибку как положено
if (isset($_GET['id_del'])) {
$id_del=$_GET['id_del'];
$file_del=db_query("SELECT file_name FROM files WHERE id=$id_del");
if(unlink("files/".$file_del)){ // Для начала пытаемся удалить файл
db_query("DELETE FROM files WHERE id=$id_del LIMIT 1");
// И если все гуд то удаляем и запись в базе
unset($id_del);
}else{
//Иначе во все горло орем о невозможности удалить файл
echo "Ааааа.... млять не могу удалить эти чертовы байтики ис харда =( ";
}
}
+ Как вообще попадают файлы на сервер? какие права на них стоят? ... вообщем мало инфы.
Кстати отображение ошибок включи и будет больше счастья ini_set('error_reporting', E_ALL);
да кстати - лучше не так "files/" а так "/files/" относительно корневого каталога
Deathdreams
27.12.2009, 21:40
if (isset($_GET['id_del'])) {
$id_del = (int)trim($_GET['id_del']);
$file_del = db_query("SELECT `file_name` FROM `files` WHERE `id`='$id_del'");
if(!$file_del){
die('Mysql problem');
}
$array = mysql_fetch_array($file_del);
$filename = $array['file_name'];
if(db_query("DELETE FROM `files` WHERE `id`='$id_del' LIMIT 1") && unlink("files/".$filename)){
die('file deleted');
} else { die('i cannot delete file :(');
}
}
Deathdreams
28.12.2009, 01:17
Ковыряйся в мускуле.
Попробуй сделать запрос без всяких посторонних функций.
Подключись к мускулю и сделай обычный mysql_query, он тебе напишет в чём ошибка заключается.
Ridikh вы мазохист? Или насильник? За что вы так сношаете mysql?
SoftLive
04.01.2010, 18:59
МБ просто переустанови Mysql.. И сотри всё в data
Deathdreams
05.01.2010, 16:37
переустанови Mysql.. И сотри всё
SoftLive не ищет лёгких путей
Deathdreams
05.01.2010, 16:59
Не мускуль нужно переустанавливать, а руки выравнять надо.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot