#php #sql
#php #sql
Вопрос:
У меня есть приведенный ниже код, и я просто хочу посчитать из таблицы members
, сколько людей имеют 1 в столбце loggedin
, и повторить это обратно. Я уверен, что мне не хватает чего-то небольшого, я просто не вижу этого.
<?php
include ('functions.php');
connect();
$result = mysql_query("SELECT * FROM members WHERE loggedin = '1'");
$num_rows = mysql_num_rows($result);
$total_mem = $num_rows (1223);
return $total_mem;
echo $total_mem;
?>
Комментарии:
1. Что на самом деле происходит? Трудно решить проблему, когда вы не говорите нам, в чем проблема.
2. Почему бы не использовать
SELECT COUNT(*) AS number FROM members GROUP BY loggedin HAVING loggedin = 1
?
Ответ №1:
echo
Никогда не будет вызван, потому что он находится после return
инструкции.
Удалите return
инструкцию, и значение должно быть показано.
Ответ №2:
Почему бы не позволить вашей базе данных выполнить подсчет за вас?
$result = mysql_query("SELECT count('id') as logged_in_count FROM members WHERE loggedin = '1'");
$row = mysql_fetch_assoc($result);
$num_rows = $row['logged_in_count'];
$total_mem = $num_rows (1223);
echo $total_mem;
return $total_mem;
Комментарии:
1. Это лучший способ сделать это, поскольку он имеет гораздо меньшие накладные расходы, поскольку запрашивает у базы данных количество объектов вместо того, чтобы возвращать объекты, а затем заставлять вас их считать.
Ответ №3:
-
Вы никогда не нажмете на этот оператор echo, потому что у вас есть оператор return прямо над ним.
-
Почему бы не использовать
SELECT COUNT(1) FROM members WHERE loggedin = 1
, а затем извлечь значение непосредственно из этого? Вы сэкономите время, потому что нужно будет вернуть только 1 строку вместо всех строк, когда все, что вам нужно, это количество.