Этот сайт продолжает появляться на моем радаре в последнее время, вдохновленный этим сайтом .
Хотя такие вещи довольно забавные, у них смешанные чувства по поводу идеи в целом. С одной стороны, все, что помогает людям улучшить свои навыки кодирования, — это хорошо. С другой стороны, думаю, что применяемый здесь подход является своего рода элитарностью, которая будет препятствовать заданию «глупых» вопросов; что общий эффект отрицательный. Невежество может (и должно) быть прощено в программировании, ИМО — никто не знает всего этого.
Более конкретно, этот конкретный PHP WTF вызывает у меня дальнейшие сомнения — читая его, вы можете подумать, что mysql_num_rows () — плохой период идеи, а это не так. Существуют ситуации, когда он имеет значение при определении размера набора результатов, который вы собираетесь использовать, но, прочитав это, вы можете прийти к выводу, что правильным решением всегда является использование двух запросов, таких как;
$query = 'SELECT COUNT(*) FROM sometable'; $result = mysql_query($query,$connection); list($count) = mysql_fetch_array($result); $query = 'SELECT * FROM sometable'; $result = mysql_query($query,$connection); while ( $row = mysql_fetch_array($result) ) { // etc. }
$query = 'SELECT COUNT(*) FROM sometable'; $result = mysql_query($query,$connection); list($count) = mysql_fetch_array($result); $query = 'SELECT * FROM sometable'; $result = mysql_query($query,$connection); while ( $row = mysql_fetch_array($result) ) { // etc. }
Другой, гораздо более серьезной проблемой, которая была упущена в обсуждении, было влияние «SELECT * FROM sometable» — полного сканирования таблицы. Если возможно, было бы неплохо сузить набор результатов с помощью некоторых предложений WHERE и использовать преимущества индексов. Здесь есть хорошее обсуждение ( кеш Google ) в MySQL Performance Tuning от The Man .
Тем не менее, думаю, что этот WTF был лучше аргументирован.