1. PHP / Говнокод #16442

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $k_new=mysql_result(mysql_query("SELECT COUNT(`mail`.`id`) FROM `mail`
     LEFT JOIN `users_konts` ON `mail`.`id_user` = `users_konts`.`id_kont` AND `users_konts`.`id_user` = '$user[id]'
     WHERE `mail`.`id_kont` = '$user[id]' AND (`users_konts`.`type` IS NULL OR `users_konts`.`type` = 'common' OR `users_konts`.`type` = 'favorite') AND `mail`.`read` = '0'"),0);
    $k_new_fav=mysql_result(mysql_query("SELECT COUNT(`mail`.`id`) FROM `mail`
     LEFT JOIN `users_konts` ON `mail`.`id_user` = `users_konts`.`id_kont` AND `users_konts`.`id_user` = '$user[id]'
     WHERE `mail`.`id_kont` = '$user[id]' AND (`users_konts`.`type` = 'favorite') AND `mail`.`read` = '0'"),0);

    Запостил: Lavir_the_Whiolet, 29 Июля 2014

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

    • И что не так? В полне читабельный код? Автор поясни.
      Ответить
      • Я в пхп не разбираюсь, но выходит что всё это выполняется для пользователя с идентифкатором 0.
        Ответить
        • не знаешь, проходи мимо
          Ответить
        • Нет. Для пользователя с идентификатором, который был в $user["id"]. А 0 - это номер строки для mysql_result, и, емнип, вообще не нужен.
          Ответить
      • 90% запроса (до скобки после AND )можно было в отдельную константу вынести - ибо по логике при изменении этой части в одном запросе ее и во второй нужно будет поменять. Да и вообще такие запросы настараживают. Ну форматирование не самое лучшее.
        Ответить
    • Опять код побрить забыли...
      Ответить
    • Второй запрос - подмножество первого.
      Йа - К.О.?
      Если очень захотеть, то можно все данные получить одним запросом, чтоб БД 2 раза не напрягалась, но оно надо?
      Кароч, говнокода особого нет.
      Ответить
      • mail.id_user = konts.id_kont
        konts.id_user = :user_id
        mail.id_kont = :user_id
        подозрительно.jpg
        Ответить
        • Хммм, за волосатостью не разглядел.
          Либо пары mail.id_user+konts.id_kont и konts.id_user+mail.id_kont - это поля которые содержат одно и тоже(sic!) значение по смыслу и у автора СУБД семантика осталась глубоко в анусе...
          либо автор попивал пивасик на лекции, когда рассказывали реляционную теорию с джоинами и, как следствие, эти запросы вернут всегда 0.000хуй000.
          Ответить

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