|
|
|
| для подсчета количества записей в таблице использую mysql_result, как посоветовали здесь на форуме. Но официальный мануал предлагает скоростные альтернативы : mysql_fetch_row(), mysql_fetch_array(), mysql_fetch_assoc() и mysql_fetch_object(), и все же на чем остановиться? | |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 18:16)
| | >для подсчета количества записей в таблице использую mysql_result, как посоветовали здесь на форуме
О_О
на КАКОМ форуме Вам посоветовали такое? | |
|
|
|
|
|
|
|
для: ddhvvn
(24.12.2008 в 18:27)
| | тута ))
вот ссылка
разъсните плиз как правильнее )) | |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 18:37)
| | аааа... Вы делаете типа
<?php
...
$q = "SELECT COUNT(*)..";
$count = mysql_result(mysql_query($query), 0);
...
?>
|
?
Если да, тогда все норм. | |
|
|
|
|
|
|
|
для: ddhvvn
(24.12.2008 в 18:52)
| | вот так делал:
<?php
$select_query = mysql_query("SELECT COUNT(*) AS num FROM news")or die ("$test");
$news=mysql_result($select_query,0,'num');
?>
|
| |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 19:16)
| | Нормально, третий параметр в принципе можно опустить. | |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 18:37)
| | Если Вам нужно просто подсчитать количество строк в таблице, без вывода данных, то это оптимальный вариант. Дело в том, что при таком запросе в переменную PHP запишекся только значение псевдонима. При применении любой из Вами перечисленных функций в переменную будет записано гораздо больше, что не оправдается даже более высокой скоростью работы самой функции. Если Вам попутно нужно что то вывести, то лучше использовать другие. | |
|
|
|
|
|
|
|
для: Николай2357
(24.12.2008 в 19:17)
| | Спасибо, Вы как всегда все толково объяснили, разобрался, при подсчете количества строк я это использую. Тогда встречный вопрос, а если попутно вывести что-то то какая функция оптимальна? | |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 19:29)
| | На вопрос: "что-то"
в данном контексте самый правильный ответ: "какая-то" | |
|
|
|
|
|
|
|
для: Valick
(24.12.2008 в 19:36)
| | ))
ну вот например
<?php
//проверяем наличие новостей в БД
$select_query = mysql_query("SELECT COUNT(*) AS num FROM news")or die ("$test");
$news=mysql_result($select_query,0,'num');
if ($news == 0)
{
exit ("$test");
}
//публикуем новости
$all_news = mysql_query("SELECT * FROM news");
while ($select_news = mysql_fetch_assoc($all_news))
{
echo "<div class=\"news\"><h3>".$select_news["name_news"]."</h3>";
echo $select_news["news"]."</div>";
}
?>
|
| |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 19:43)
| | Попутно, это я имел ввиду, что при выборке каких то строк по определённому условию, нужно не только получить их значения, но и подсчитать количество строк, удовлетворяющих этому условию. Тогда для подсчёта можно использовать к примеру mysql_num_rows(); а для вывода значений тот же mysql_fetch_assoc(); Тогда Ваша конструкция будет выглядеть примерно так:
<?php
//публикуем новости
$all_news = mysql_query("SELECT `name_news`,`news` FROM news");
if (mysql_num_rows($all_news) == 0)
exit ($test);
while ($select_news = mysql_fetch_assoc($all_news))
echo "<div class=\"news\"><h3>".$select_news["name_news"]."</h3>".$select_news["news"]."</div>";
?>
|
| |
|
|
|
|
|
|
|
для: Николай2357
(24.12.2008 в 22:03)
| | спасибо, есть люди которые могут просто и доходчиво объяснить ))
ситуация становиться все яснее, действительно код проще стал ))
я немного подправил(т.е. проверяю существет ли таблица и есть ли в ней записи), вот, что получилось:
<?php
//проверяем существует ли таблица и есть ли в ней записи
$all_news = mysql_query("SELECT `name_news`,`news` FROM news");
if ($all_news == NULL || mysql_num_rows($all_news) == 0)
exit ($test);
//публикуем новости
while ($select_news = mysql_fetch_assoc($all_news))
echo "<div class=\"news\"><h3>".$select_news["name_news"]."</h3>".$select_news["news"]."</div>";
?>
|
как Вам такой вариант? | |
|
|
|
|
|
|
|
для: Bvz
(24.12.2008 в 22:59)
| | Вообще то это лишнее))) Если записей нет, то откуда таблице взятся? | |
|
|
|
|
|
|
|
для: Николай2357
(24.12.2008 в 23:53)
| | ну например таблица пустая )) | |
|
|
|
|
|
|
|
для: Bvz
(25.12.2008 в 08:37)
| | Ну если она пустая, значит нет записей в ней... А если есть запись, значит и таблица есть. Даже если есть таблица и есть записи, а запрос не прошел, всё равно количество рядов будет ==0. Так что лишнее это. Масло масляное в маслёнке ))) К тому же, если и проверять, то лучше не на NULL, а на true. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 08:49)
| | учел, просто, если есть таблица и нет записей то выдает ошибку
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\mysite\www\index.php on line 39
потом выводит переменную $test
а если
if ($all_news == FALSE || mysql_num_rows($all_news) == 0)
exit ($test);
|
то ошибку не выдает, а сразу переменную $test
можно подавить собакой, но не очень хотелось бы | |
|
|
|
|
|
|
|
для: Bvz
(25.12.2008 в 09:07)
| | Ошибки лучше коллекционировать в логах. Проще диагностику делать. А такая проверка разве нотис не выдаёт? true получится, если запрос успешный. Тут немного другая логика должна быть. Хотя и так сойдёт. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 09:15)
| | >true получится, если запрос успешный
ерунда. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2008 в 09:17)
| | исправил | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2008 в 09:17)
| | >ерунда.
Оч. интересно. И интрегующе. Наверно и руководство нужно читать осторожно... Вот от туда:
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки.
|
Я же имею ввиду общее применение, не конкретно этот случай. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 09:22)
| | В этой ветви вы рассматриваете именно SELECT.
>Я же имею ввиду общее применение, не конкретно этот случай.
Тогда нужно писать, что возвращается значение, отличное от false | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2008 в 10:01)
| | В ветке вообще то рассматривался вопрос о подсчёте количества записей. А вот сейчас вообще до логов дописались... Я сам запутался уже, постораюсь быть точнее. Спасибо за поправку. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 09:15)
| | я не знаю как ошибки в логи писать )) | |
|
|
|
|
|
|
|
для: Bvz
(25.12.2008 в 09:25)
| | Как минимум в .htaccess надо прописать это:
php_flag display_errors Off
php_flag log_errors On
| , тогда нотисы на экран не полезут, а запишутся в лог. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 09:29)
| | создал в корне .htaccess
содержанием
php_flag display_errors Off
php_flag log_errors On
|
так же в корне создал error.log
ошибки не выводятся но в логи не пишется (( | |
|
|
|
|
|
|
|
для: Bvz
(25.12.2008 в 09:36)
| | Ну я же написал - как минимум))). Добавьте это:
php_value error_log error.log
|
| |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 09:45)
| | странно, вообще страница перестала грузиться, а как максимум? | |
|
|
|
|
|
|
|
для: Bvz
(25.12.2008 в 09:57)
| | Это и есть максимум. Минимальный))) Проблема не в этом у Вас, так всё должно работать. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 10:06)
| | все работает, разобрался, спасибо! )) | |
|
|
|