php+mysql
$db = mysql_pconnect("localhost", "root", "", "base");
mysql_select_db("base");
здесь подключемся к серверу и выделяем базу
$query = "SELECT ... FROM ... where ..... '......'";
определяем запрос
$result = mysql_query($query);
выполняем запрос
все возврашаемые данные присваиваются переменной $result
$kol_zap = mysql_num_rows($result);
считаем количество строк
и после выводим на экран построчно
for ($i = 1; $i <= $kol_zap; $i++)
{
$row = mysql_fetch_array($result);
echo "<tr>";
echo "<td>".$row['...']."</td>";
echo "<td>".$row['...']."</td>";
echo "<td>".$row['...']."</td>";
echo "<td>".$row['...']."</td>";
echo "<td>".$row['....']."</td>";
echo "</tr>";
}
задача в следующем .
Нужно чтобы как только повлялся результат начиная с первого выводился на экран
тоесть первый ресультатк который присваивается переменной $result вывести на экран и так далее.
Как можно сделать.
echo сразу в поток всё отправляет. Т.е., всё происходит именно так, как ты хочешь.
Вот смотри все данные (результаты запроса)сначала присваиваются переменной $result и после чего вывожу на экран.
Вопрос в следующем:
Можно сделать так что бы самый первый ресултат (ответ) запроса, который присваивается переменной сразу вывести на экран. И подобно этому и все остальное.
Делаешь mysql_fetch_array - вот тебе первая строка результата
второй проход цикла - еще раз mysql_fetch_array - вот тебе и вторая строка результата
В чем проблема-то?
Вот смотри все данные (результаты запроса)сначала присваиваются переменной $result и после чего вывожу на экран.
Вопрос в следующем:
Можно сделать так что бы самый первый ресултат (ответ) запроса, который присваивается переменной сразу вывести на экран. И подобно этому и все остальное.[/QUOTE]
Любезный, такого не бывает. В случае с MySQL - точно. А что, пара десятков милисекунд большую рояль играют уже? Переходите на Oracle.
Код:
while($print = mysql_fetch_array($result)) {
echo $print[0] . "\n";
}
echo $print[0] . "\n";
}
Мне кажеться он про это.
Код:
while($print = mysql_fetch_array($result)) {
echo $print[0] . "\n";
}
echo $print[0] . "\n";
}
Мне кажеться он про это.[/QUOTE]
А какая разница? $result всё-равно присутствует...
Я понял, теперь доехало (медленно, но всё же). Теперь я задам вопрос, а для чего это нужно? Хочешь на памяти экономить? Делай более правильный запрос(используй минимальное колличество полей) и не юзай mysql_fetch_array() это приросту и то больше даст.
А что же использовать ели не fetch_array
А что же использовать ели не fetch_array[/QUOTE]
fetch_row или fetch_assoc
Но что-то уж очень не похоже на правду, чтобы в MySQL было указанное количество записей...
Честно говоря, даже самые быстрые MSSQL и Oracle будут тоже очень долго выбирать из такого количества требуемое. И тут не сэкономишь ни на чём.
Только за то, что эту БД засунули в мускул назвать человека умным не как нельзя. Просто эта БД не предназначена для таких данных. По поводу mysql_fetch_array() и его заменителях, после того как я посмотрел var_dump() от него, я отказался от этой функции (до этого наверное ман невнимательно читал), т.к. эта функция возвращает не один, а два одинаковых массива (один числовой, во втором имена полей в качестве значения). И если ты с нулями не ошибся, то тебе прямая дорога на oracle.com
Вот-вот, я тоже четыре раза нули пересчитал... Очень смутно представляю такую таблицу в MySQL...
60 миллионов записей вполне выдержит PostgreSQL. Проверено. Сегодня с утра для такой таблицы делал VACUUM FULL
2RussianSpy Дело не в том что туда можно их запихнуть, дело в том, как с этим работать будет всё) Вообще рекомендуется (ссылку не просите, искать не хоца, а где читал - не помню) делать в мускул не более ляма записей.
http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html - тут есть все инфа!
В добавок, ты написал что ты используеш : $query = "SELECT ... FROM ... where ..... '......'";
Вот все переменные которые в WHERE, возми их и проиндексируй, ето поможет очень со скоростью! Но - по правилам баз данных это не верно , зато помогает. + у тебя база вырастит в размере!
и вообше перепиши скрипт вот так вот :
<?php
mysql_pconnect("localhost", "root", "");
mysql_select_db("base");
$Query = "Select var1,var2,var3 FROM ... where ..... '......'";
/**
* Не используй Select *, выбирай именно то что тебе надо!
*/
$Result = mysql_query($Query);
/**
* $kol_zap = mysql_num_rows($result); - ошибка : так не делай - это очень долго. посмотри
* ниже как я считаю!
*/
$Counter = 0;
while($Row = mysql_fetch_assoc($Result))
{
$Counter++;
/**
* Тут подсчитываем кол-во строк
* просто mysql_num_rows очень долго И не нужно, так как ты все равно по всему
* Array проходишся.
*/
echo "<tr>";
echo "<td>".$Row['...']."</td>";
echo "<td>".$Row['...']."</td>";
echo "<td>".$Row['...']."</td>";
echo "<td>".$Row['...']."</td>";
echo "<td>".$Row['...']."</td>";
echo "</tr>";
}
?>
Если сделаеш так, то получиш ускорение раза так в 3...
Мдя... Боришся за скорость и при большом колличестве строк лепишь столько echo )))