Про PHP и базы данных

В который раз убеждаюсь, что изложение SQL в «непрофильных» книжках по всякому там PHP приводит разве что к бесконтрольному распространению похапешных кодеров.

Недавно наблюдал замечательное — из базы данных извлекаются все записи таблицы (SELECT * FROM foo.bar;), затем сортируются пузырьком (!) в PHP-скрипте (про usort() аффтар был не в курсе), а затем выводятся те из них, которые имеют значение некоторого числового поля, равное 0 и 1. Про существование WHERE и ORDER BY мега-похапешник был не в курсе.

Собственно, осуждать похапешника и обвинять того в быдлокодерстве не стоит — я и сам был таким, делал сайты на самописном подобии CMS. Все это даже работало — с посещаемостью два недочеловека в день и не такое работать будет. Впрочем, некое «оправдание» у меня есть — я «изучал» SQL и PHP по статьям в журнале «Мурзилка» «Ксакеп». С гордостью могу заявить, что никаким SQL Injection у меня никогда не пахло! Впрочем, больше ничего хорошего сказать нельзя. Чему можно научиться вот из такого?

$sql2="select * from xforum";
$res2=mysql_query($sql2);
$a=mysql_num_rows($res2); #считаем количество тем в форуме
$b=ceil($a/30); # считаем количество страниц с результатами запроса
echo "Страницы: "; for ($i=1; $i<=$b; $i++) {if ($i!=$page) {echo "<a href=forum.php?page=$i>";} echo "$i"; if ($i!=$page) {echo "</a>";} echo " ";}
# выводим в цикле список доступных страниц с сообщениями
$sql="select * from xforum order by 'pid' desc limit $from,29"; #запрос на постраничный вывод дискуссий форума
$res=mysql_query($sql);

Собственно, самые продвинутые похапешники, которые даже знают «классические» алгоритмы, могут не заморачиваться со вторым запросом, а, как я уже говорил, отсортировать все «пузырьком». А представляете, что творится, когда в таблице xforum хранятся не короткие заголовки тем, а что-то более содержательное?

Я не говорю про всякое сложное типа «нормальных форм», но почему-то большинство похапешников совершенно не представляют себе, что такое SQL и что он может. Самое главное — это не мешает им считать себя большими специалистами по базам данных (умеют написать UPDATE и SELECT). Не так давно видел «критику» одного популярного вордпрессовского плагина — человек немного потупил в код, переписал пару SQL-запросов, убрал «сортировку пузырьком» — и добился весьма существенного роста производительности.

И эти люди запрещают нам ковыряться в носу :)

UPD Все было еще круче! Сортировка пузырьком понадобилась ровно по той причине, что чел просто не разобрался, как использовать usort(). Интересно, а лет пятнадцать назад, такие же монстры писали на C?