2016-02-11 2 views
-3

Я в настоящее время получаю сообщение об ошибке:Сообщения об ошибке при использовании COUNT (*)

"Catchable fatal error: Object of class mysqli_result could not be converted to string in ".

Я пытаюсь подсчитать количество строк в таблице. Я знаю, что вы также можете использовать mysqli_num_rows, но я думал, что могу просто использовать SELECT COUNT (*) FROM table, но он, похоже, не работает. Как я могу заставить Count(*) работать?

Мой код:

$query = "SELECT COUNT(*) FROM category"; 

$select_all_categories = mysqli_query($connection, $query); 

echo "<div class='huge'> $select_all_categories </div>" 
+3

это не имеет никакого отношения ** ** делать с кол. вам нужно RTFM http://php.net/mysqli_query. функция возвращает инструкцию HANDLE. вам нужно получить строку результатов из этого дескриптора и извлечь свой счет из строки. –

+0

Если вы прочитали документы: вы бы увидели, что при успешном завершении mysqli_query возвращает объект (в вашем случае), а при ошибке он возвращает 'false'. – Daan

+0

'$ select_all_categories' - это экземпляр' mysqli_result', а не строка. Этот класс предоставляет методы для доступа к данным, возвращаемым из запроса, например: 'echo $ select_all_categories-> fetch_assoc() ['COUNT (*)'];' – Steve

ответ

2

Это не будет работать, потому что mysqli_query возвращает объект, заполненный данными, данные, которые должны быть выбраны либо mysqli_fetch_array или mysqli_fetch_assoc.

Если вы хотите, чтобы получить счет, вы должны были бы сделать это вместо:

$query = "SELECT COUNT(*) as count FROM category"; 
$select_all_categories = mysqli_query($connection, $query); 
$data = mysqli_fetch_assoc($select_all_categories); 
echo "<div class='huge'> " . $data['count']. " </div>" 
+0

'$ data ['count']' или 'mysqli_fetch_object() ' – Steve

+0

Спасибо, Стив, я забыл, что – Phiter

1

$select_all_categories является объект, это не простая строка. Поэтому вы не можете использовать echo.

Вам нужно будет получить фактические результаты, прежде чем вы сможете даже добраться до точки жизнеспособной строки.

В вашем случае для простого подсчета:

$query = "SELECT COUNT(*) AS 'count' FROM category"; 

    $select_all_categories = mysqli_query($connection, $query); 

    $rows = $select_all_categories->fetch_assoc(); 

    $string = $rows[0]['count']; 

    echo "<div class='huge'> $string </div>" 

Обратите внимание, что я дал столбец псевдоним count в MySQL Query.

Ваш запрос (включая COUNT(*)) в порядке, он не вызывает ошибку здесь. Ошибка, которую вы получаете, - это ошибка PHP - сам сценарий имеет проблемы. PHP говорит вам, что вы не можете эхо-объект. Вы можете только эхо-строки, хотя PHP будет преобразовывать большинство типов данных в строки для вас (например, целые числа), если вы попытаетесь их повторить.

1

$select_all_categories переменная это объект, вы можете прочитать об этом в documentation. Вы можете использовать с что методы fetch_all, fetch_assoc, fetch_row и т.д.

В вашем случае я рекомендую использовать fetch_row, например:

<?php 

$connection = new mysqli('127.0.0.1', 'root', 'www', 'ccc'); 

$select_all_categories = $connection->query('SELECT COUNT(*) FROM `category`'); 

var_dump($select_all_categories->fetch_row()); // fetch_row() will return "1" for my database 
Смежные вопросы