PHP в деталях

       

Комментарии к статье ""


30.12.2000 06:16  Bls
mysql_num_rows(mysql_query("SELECT id FROM table WHERE field LIKE '%$v%'"));

ну кто же так делает. есть в sql конструкция count: select count(id) as kolichestvo from table where field LIKE '%$v%'
Ответ DL:

...А потом придется лишний раз вытаскивать массив и из него брать элемент.
, пункт 18. Лишние переменные - лишняя память.
31.12.2000 03:31  Bls
В той конструкции которой пользуешься ты нагружаетя не только память:

mysql приходится выполнить выборку всех id удовлетворяющих условию. Потом сохранить их в ожидании пока Вы к ним не обратитесь. (предположим что это 20 целых чисел).

В противовес этому при использвании count mysql хранит 1 целое число. Убедил ? :)
31.12.2000 03:33  Bls
получился разнабой (ты, Вы)

надеюсь Вы не в обиде :))
Ответ DL:

Да нет. Просто imho код более читаем, а внутри mysql производительность та же - либо делается группировка, либо подсчет кол-ва строк. К тому же не надо делать mysql_free_result (а если база большая, это необходимо). Так что, это дело вкуса, и того, кому как удобнее.
6.1.2001 23:43  Sergey  []
Если говорить о поиске, то интересно было бы узнать не о SELECT из БД, а о поиске как таковом. К примеру - если требуется быстро искать на PHP в "куче текстовых файлов", то как это делается (индексация в той же базе и тд)
Ответ DL:

Мне не совсем понятно определение "поиск как таковой". Чем SELECT не поиск? :) А для быстрого поиска в файлах есть хорошо отработанные утилиты, как .
12.1.2001 13:22  Axel  []
А почему символы с x7F по xFF стали "ненормальными" ?

или неправильно понял смысл функции $search = preg_replace("/[^(w)|(x7F-xFF)|(s)]/", " ", $search); ?

Best regards.
Ответ DL:

Там есть символ '^', инвертирующий строку, то есть все кроме этих символов будет резаться.
3.2.2001 02:18  falcon  []
Кое что в "обработке строки" все таки не предусмотренно...

А именно выход, если были введены одни пробелы.

После trim переменная станет равной нулю и mySQL в запросе это не понравится.
Ответ DL:

Посмотрите в - там это предусмотрено.
1.3.2001 18:21  Смоляное Чучелко  []
К вопросу о count(id): ежели так уж хочется поэкономить память, можно ведь написать mysql_result($result,0,1)
Ответ DL:

Кстати, экспериментальным путем установлено, что

$r = mysql_query("select id from ... where ...");

$num_rows = mysql_num_rows($r);

при большом количестве строк в результате выборки медленнее, чем

$r= mysql_query("select count(id) as num_rows from ... where ...");

$num_rows = mysql_fetch_row($r);

$num_rows = $num_rows[0];

(можно проверить, выполнив запросы через терминал).
<

Содержание раздела