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

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    Часть 1
    =====================================
    foreach ($_POST['massive'] as $key => $val)
    {
    @mysql_query("INSERT INTO table VALUES (NULL,'".$val."'");
    } 	
    ======================================
    Часть 2
    ======================================
    if (!empty($_POST['massive'])/*&&is_array($_POST['massive']) для любителей пожестче=)*/)
    {
    //Так мы точно знаем что нам что-то передали(не выскочит нотис).
    //Далее надо сформировать правильный запрос. Никогда, НИКОГДА нельзя делать кучу инсертов циклом, т.к. скорее всего это закончиться смертью сервера.
    //А сделать как-нить так
    
    foreach ($_POST['massive'] as $key => $val)
    {
     $query.="('".mysql_real_escape_string($val)."'),"; //Cделаем заготовку для запроса, попутно параметр экранируется, что бы злобные хакеры не подсунули нам кавычку и прочую гадость.
    }
    $query= 'INSERT INTO table VALUES'.substr($query, 0, -1).';';//Обрежем последнюю лишнюю запятую, и в итоге получим запрос вида INSERT INTO table VALUES (),(),()..();
    if (!mysql_query($query)) //Скажу по секрету, что ставить собаку это моветон.
    {
     print "Упс, что-то сломалось";
     print mysql_error();
    }else {print "Вот и все"}
    ==========================================

    Вобщем, увидел на одном форуме часть 1.
    Будучи в хорошем настроении решил поправить. И Выдал часть 2, прямо вот в форуме. Думал отправить.. Но попахивает же, да?

    Запостил: vitaly, 23 Августа 2010

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

    • дошел до 5ой строки, дальше не читал... говно
      Ответить
      • Дык то что часть один - очевидно что говно. Интересует вторая=)
        Ответить
        • принципиальной разницы нет, но кода зачем то прибавилось
          Ответить
    • Попахивает, да.
      Для начала: чоткие PHP-погромисты не юзают этот ваш бэйсиковский print.
      У нас все свое, родное, крутое такое и дерзкое. Используйте echo, чтобы влиться в наши чоткие ряды.
      На досуге погуглите разницу между: echo и print, одинарными кавычками и двойными.
      А также - как форматировать код и писать условия. Узнайте, что такое конкатенкация, и как она помогает сокращать количество команд вывода.
      Собака порой нужна, но тогда ОБЯЗАТЕЛЬНО нужно делать свою обертку для варнинга. Иначе рискуете битый час думать над тем, что же здесь не работает. А PHP будет молчать как партизан.

      Про передачу массива методом Post...
      Вы уверены, что нет другого выхода?
      Ответить
      • Ну как бе просто пример. Мне то пофиг откуда оно берется. Изначально же не мой пример. Разницу между кавычками знаю. Бейсиковский принт.. Вот как раз бейсик я НЕ знаю. И код форматировать умею. Это как бе писалось в форме быстрого ответа форума. Как собаками пользоваться я тоже в курсе)
        Ответить
        • Ну тогда если вы все знаете - почему плодите говно?
          И зачем тогда спрашивать, если вы так умны?
          По вашему коду не скажешь, что вы это все знаете.
          И мне тоже порой приходится писать код в форме ответа, но говнистости коду это не придает, как ни странно.
          Ответить
          • Ну вот потому и спрашиваю. Я понимаю что второй вариант пахнет. не понимаю где. Ну, кавычки перепутал, да. А в остальном?
            Ответить
    • ох, фейспалм.

      даже не знаю, что Вам сказатьб
      Ответить
    • Упс, ай дидыд эген!
      Ответить
    • 1 = 2 = пис оф щит
      Ответить
    • if (!empty($_POST['massive'])/*&&is_array($_POST['massive']) {
      foreach ($_POST['massive'] as $val) {
      $els[] = "('".mysql_real_escape_string($val)."')" ;
      }
      $query= 'INSERT INTO table VALUES'. implode(',',$els);
      if (!mysql_query($query)) {
      echo 'Упс, что-то сломалось' . mysql_error();
      }else { echo 'Вот и все'';
      }
      }
      так кашернее яхз...
      Ответить
      • 1) Пользуйтесь [сode=рhр][/соde]
        2) Код нерабочий - комментарий не закрыт и опечатка в третьей снизу строке
        3) Чем это кошернее?
        Ответить
      • согласно кашруту кошерный код не может содержать POST, mysql_query и echo в одном классе.
        А в кашруте кашрутов -- он вообще mysql_query содержать не может
        Ответить
        • слой работы с дб - нечистый?
          Ответить
        • Но как быть согласно кашруту, ведь этот код не содержит классов? А вот у инквизиции здесь не возникает лишних вопросов: сжечь ересь и всё.
          Ответить

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