Подсчитать количество строк в таблице при помощи mysqli

S3
На сайте с 29.03.2012
Offline
348
8056

Проверил наброски сайта на живом хостинге, а он ругается на устаревшие команды MYSQL. Попробовал перейти на mysqli, но знаний пока не хватает и не могу до конца понять логику.

Как подсчитать количество записей в таблице? делал так:



$sql = "SELECT COUNT(*) FROM `posts`";
$result = $mysqli->query($sql);
$total = $result->num_rows;
echo 'В таблице '.$total.' строк';

Но выдает что только одна строка, хотя их больше и со старыми запросами все работает.

подключаюсь к базе так:


$mysqli = new mysqli("localhost", "root", "pass", "db");
if ($mysqli->connect_errno) {
echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
else{
echo "соединение установлено \n";

}

Если можете напишите мне пример правильного запроса, но не отсылайте к литературе, я запутался с этими запросами.

---------- Добавлено 04.06.2014 в 13:43 ----------

Нашел ошибку, можно было просто запрос сделать -

$sql = "SELECT * FROM `posts`";

А можно бы как нить таки COUNT(*) использовать? Вроде бы такой запрос проще для базы?

K5
На сайте с 21.07.2010
Offline
209
#1
SELECT COUNT(*) FROM `wp_posts`;
767

замечательно работает

Тип сервера: MySQL

Версия сервера: 5.5.32

какие ошибки пишет?

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#2

Вы просто не верно применяете функции.

num_rows это значит посчитать сколько строк в запросе выводится. Верно 1 т.к. вы запрашиваете сколько строк, и этот ответ помещается в 1 строчку. Вы не результат запрашиваете.

Вам нужна функция: fetch_array()

она выведет вам данные запроса.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S3
На сайте с 29.03.2012
Offline
348
#3

LEOnidUKG а напишите пример, то я уже запутался. Тяжело дается переход)))

kgtu5 запрос прекрасно работает, только я не понимаю как вытащить данные с помощью mysqli в старом формате у меня все отлично работает)

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#4
Sly32:
LEOnidUKG а напишите пример, то я уже запутался. Тяжело дается переход)))
kgtu5 запрос прекрасно работает, только я не понимаю как вытащить данные с помощью mysqli в старом формате у меня все отлично работает)

Примеры в документации: https://www.google.com/search?q=PHP+mysqli+fetch_array()&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest&&gws_rd=cr&ei=nfURUtJwz47iBO6RgbgL

L1
На сайте с 21.09.2007
Offline
114
#5

$sql = "SELECT * FROM `posts`"; 

$result = $mysqli->query($sql);
$total = $result->num_rows;
echo 'В таблице '.$total.' строк';

В этом случае вы получите нужный результат. Но num_rows не всегда хорошо использовать.

S3
На сайте с 29.03.2012
Offline
348
#6

L3n1n Да работает, но понимаю что это не совсем верный путь, поэтому и прошу привести пример правильного оформления запроса.

А не отправлять в поиск...

siv1987
На сайте с 02.04.2009
Offline
427
#7

Sly32, вам же ответили, что num_rows возвращает количество рядов из результирующей выборке. Т.е. в вашем случае будет только один ряд - результат функции COUNT(). Вам нужно уго зафетчить и получить результат выполнения этой функции. А в поиске для этого есть все нужные вам примеры. Не любите поиск, читайте документацию.

$row = $result->fetch_array(MYSQLI_NUM);

echo $row[0];

S3
На сайте с 29.03.2012
Offline
348
#8
siv1987:
Sly32, вам же ответили, что num_rows возвращает количество рядов из результирующей выборке. Т.е. в вашем случае будет только один ряд - результат функции COUNT(). Вам нужно уго зафетчить и получить результат выполнения этой функции. А в поиске для этого есть все нужные вам примеры. Не любите поиск, читайте документацию.

$row = $result->fetch_array(MYSQLI_NUM);
echo $row[0];

Сижу, ищу, читаю))) Вам в очередной раз спасибо, теперь стало понятнее. Не давался мне синтаксис запросов mysqli. Теперь вот немного пробрался вперед.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий