MySQLi count (*) всегда возвращает 1

Я пытаюсь подсчитать количество строк в таблице и подумал, что это правильный способ сделать это:

$result = $db->query("SELECT COUNT(*) FROM `table`;"); $count = $result->num_rows; 

Но count всегда возвращает (int)1 . Если я использую тот же запрос в phpMyAdmin, я получаю правильный результат. Он сидит в таблице, поэтому я также попытался проверить $count[0] , но это возвращает NULL .

Каков правильный способ сделать это?

Вы должны получить эту запись, она будет содержать результат Count ()

 $result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); echo '#: ', $row[0]; 

Всегда старайтесь делать ассоциативную выборку, таким образом вы можете легко получить то, что хотите, в результате нескольких случаев

Вот пример

 $result = $mysqli->query("SELECT COUNT(*) AS cityCount FROM myCity") $row = $result->fetch_assoc(); echo $row['cityCount']." rows in table myCity."; $result->close(); 

Я нахожу этот способ более читабельным:

 $result = $mysqli->query('select count(*) as `c` from `table`'); $count = $result->fetch_object()->c; $result->free(); $mysqli->close(); echo "there are {$count} rows in the table"; 

Не то, чтобы у меня что-то против массивов …

Это сработало для меня.

  // Veh Pro Count $query_tvp = "SELECT count(*) as total from submit"; if ($result_tvp = $mysqli->query("$query_tvp")) { /* determine number of rows result set */ $total_tvp = $result_tvp->fetch_row(); $total_tvp = $total_tvp['0']; /* close result set */ $result_tvp->close(); } echo "Total: $total_tvp"; 

$ Result-> num_rows; возвращает число строк, затронутых запросом. Когда вы выполняете счет (*) в таблице, он возвращает только одну строку, поэтому у вас не может быть другого результата, кроме 1.