простая ошибка php, но не вижу, где я ошибаюсь?

#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:

  1. Вы никогда не нажмете на этот оператор echo, потому что у вас есть оператор return прямо над ним.

  2. Почему бы не использовать SELECT COUNT(1) FROM members WHERE loggedin = 1 , а затем извлечь значение непосредственно из этого? Вы сэкономите время, потому что нужно будет вернуть только 1 строку вместо всех строк, когда все, что вам нужно, это количество.