Подсчет количества num_rows - PullRequest
0 голосов
/ 01 апреля 2011

У меня такой запрос:

SELECT * FROM configurations WHERE ID = userID

У меня есть такая логика:

if ($query->num_rows() > 0) {

foreach($query->result() as $row) { 
// display data
}

else {

// display no data found message

}

Но когда я пытаюсь сделать это:

count($query->num_rows())

это всегда 1, независимо от того, сколько результатов возвращено. Если возвращается 1 или более, выполняется «если». Если нет результатов, возвращается «else». Тем не менее, количество никогда не меняется. Что происходит?

Ответы [ 3 ]

1 голос
/ 01 апреля 2011

Вы получаете целое число с $ query-> num_rows () , поэтому, когда вы запускаете это целое число через функцию count () , она предназначена для возврата 1.

http://us2.php.net/manual/en/function.count.php

Если var не является массивом или объектом с реализованным интерфейсом Countable, будет возвращено 1.Существует одно исключение, если var равен NULL, будет возвращено 0.

1 голос
/ 01 апреля 2011

Вы не можете count() число, оно отлично работает. Если вам нужно только количество записей из таблицы, используйте COUNT() в SQL ...

$sql = mysql_query("SELECT COUNT(0) AS count FROM configurations WHERE ID = userID");
$sql = mysql_fetch_assoc($sql);
$count = $sql["count"];

В противном случае просто присвойте $count = $query->num_rows(); как @ chriso .

1 голос
/ 01 апреля 2011

Во-первых else { должно быть } else { - вам не хватает скобки

Во-вторых, count() используется для подсчета количества элементов в массиве.Поскольку $query->num_rows() возвращает число, а не массив, вам не нужно использовать count().В вашем случае count () говорила вам, что есть одно число, а не фактическое число!

Попробуйте:

$count = $query->num_rows();
echo $count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...