"PHP" / Говнокод #13031 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
function deleteDublicateItems(){
    $q = '
    select COUNT(*), id, vk_id
    from `items`
    group by `vk_id`
    having COUNT(*) > 1';
    $sql = mysql_query($q);
    
    if (mysql_num_rows($sql)){	
	while($row = mysql_fetch_assoc($sql)){
	    $sql2 = mysql_query('select * from `items` where `vk_id` = "'.$row['vk_id'].'" and `id` != "'.$row['id'].'"');
	    
	    if (mysql_num_rows($sql2)) {
		while($row2 = mysql_fetch_assoc($sql2)) {
		    $sql3 = mysql_query('select * from `images` where `item_id` = "'.$row2['id'].'"');
		    
		    if (mysql_num_rows($sql3)) {
			while ($row3 = mysql_fetch_assoc($sql3)) {
			    @unlink( ROOT . DS . 'uploads' . DS . 'images' . DS . $row3['name'] . '.' . $row3['ext']);
			    mysql_query('delete from `images` where `id` = "'.$row3['id'].'"');
			}
		    }		    
		    mysql_query('delete from `items` where `id` = "'.$row2['id'].'"');
		}
	    }
	}
    }
}

удаление дубликатов

Запостил: Serious_Andy Serious_Andy, (Updated )

Комментарии (7) RSS

  • Communication-Engaging Algorithms (Наверное, чтобы Обаме насолить)
    Ответить
  • Превентивные методы рулят - use unique constraints 🙂
    Ответить
  • @unlink( ROOT . DS . 'uploads' . DS . 'images' . DS . $row3['name'] . '.' . $row3['ext']);


    не понимаю, неужели DIRECTORY_SEPARATOR так важен для файловых функций? Вроде же и так должно работать на всех платформах:
    @unlink( ROOT .  '/uploads/images/' . $row3['name'] . '.' . $row3['ext']);


    Или я не прав?
    Ответить
    • Должно 😉 "/" не работает только в командных строках виндовых прог - но это проблема их парсера, не операционки. А так, че в винде, че в никсоподобных, ядра и апишки вполне жрут /. Причем в большинстве случаев даже и /////// будет понят как один /.
      Ответить
    • Ну использование DS сферически-вакуумно надежнее, как поведут себя эти функции в случае не тех DS в пути файла в документации не описано, а полагаться на недокументированные особенности не комильфо, но это мое имхо. Довольно часто встречается код, в котором на это не заморачиваются, особенно в небольших скриптах.
      Ответить
    • У меня был случай когда какая-то файловая операция не работала при запуске на Windows-сервере (не из консоли). Сейчас уже не помню, но кажется там причина была в том, что откуда-то возвращался путь до файла, который потом резался, и для разрезания использовался "/" вместо DS, а в строке использовался как раз виндовый разделитель. Но я не помню точно, возможно проблема была в другом. Во всяком случае точно помню, что фикс заключался как раз в использовании DS.
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8