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

    +170

    1. 1
    2. 2
    $sql = "DELETE FROM `".$this->tbl_name."` WHERE 1=1;";
    mysql_query($sql);

    Вот так говнокодеры одной веб-конторки делают TRUNCATE)

    Запостил: genghis, 29 Декабря 2010

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

    • ну, видел сокращенный вариант такой штуки без WHERE =)
      Ответить
    • универсально, условие поменять - и удаляться будут не все записи )))
      Ответить
    • > удаляться будут не все записи
      тогда какой же это TRUNCATE ???
      Ответить
    • это случайно не эта контора: _http://www.cural.ru
      Ответить
      • ахтунг, если сразу не закрыть, оно задергается флешем и напишет "тыумен"
        Ответить
      • по секрету всему свету. это http://www.sumteh.ru/
        но географически почти угадал ;)
        наверное в этом городе все так пишут :D
        Ответить
        • ОМ Г, а здесь флеш с раздражающим спанч-бобом и ЧПУ 100%
          Ответить
        • это видимо один и тот же деятель, или же его "ученики"
          Ответить
    • они хочут получить кол-во удаленных записей, потому и делают делит с условием
      ну или хотят что бы все тормозило

      а код и правда говно, угадайте чому
      Ответить
      • потому что без PDO ???.

        Не оригинально. но тут и PDO не поможет. Тут надо мозг менять.
        Ответить
      • должно быть написано "DELETE * FROM", нет?
        Ответить
        • Читай первый пост, а потом мануал.
          Должно быть написано "TRUNCATE `".$this->tbl_name."`".
          а еще лучше
          "TRUNCATE `{$this->tbl_name}`".
          Ответить
        • )))зачем там звездочка?
          думаете, можно удалить не все колонки?
          Ответить
    • А по-моему, phpmyadmin по дефолту тоже такие условия лепит в sql-редакторе
      Ответить
    • Ни хера это не альтернатива TRUNCATE, AUTO_INCREMENT так не сбросить...
      Ответить
    • Двоечничнки, TRUNCATE нужен чтобы ссылочную целостность обойти
      Ответить
      • ссылочная целостность? в mysql?
        Ответить
        • я не рискнул вдаваться в подробности и вещать, что сбрасывать автоэкскремент это глупейшее действие :)
          Ответить
          • нет, ну, в режиме отладки-то ноорм
            Ответить
          • а по-моему, ничуть не страшнее, чем оставлять указания на удаленные данные. Что их нет, что они заменены другими
            Ответить
            • в этом и смысл TRUNCATE в отличии от DELETE c каскадным эффектом
              Ответить
              • смысл TRUNCATE в том, что это показатель того, чего мы хотим (я уж не говорю о глумлении над СУБД). А то вот почитают вас и будут думать, что только в этом разница
                Ответить
      • вот и нет)))
        если на эту таблицу форин кей -- не сработает транкейт
        я надеюсь
        потому что если сработает -- муська упадет в моем глазу
        Ответить
    • Где здесь С++?
      Ответить

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