Как получить количество строк в таблице MySQL, используя PHP? - PullRequest
0 голосов
/ 04 октября 2019

Я просто хочу использовать PHP для подсчета общего количества строк в таблице MySQL и сохранить число в переменной с именем $count.

Я предпочитаю процедурный код, так как мой разум нене работает в объектно-ориентированном режиме.

$sql="SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result);
echo $count;

Вышеприведенная версия является последней, которую я пробовалВместо того, чтобы давать мне число, оно дает мне слово «Массив».

Ответы [ 3 ]

2 голосов
/ 04 октября 2019

У вас есть несколько вариантов получения значения COUNT(*) из SQL. Наиболее простыми из трех, вероятно, являются следующие:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

или использование псевдонима столбца:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

или использование числового массива:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

Не использовать mysqli_num_rowsдля подсчета записей в базе данных, как это предлагается в некоторых местах в Интернете. Эта функция очень мало используется, и подсчет записей определенно не входит в их число. Используя mysqli_num_rows, вы будете просить MySQL извлечь все соответствующие записи из базы данных, что может потребовать очень много ресурсов. Гораздо лучше делегировать работу по подсчету записей в MySQL, а затем просто получить возвращаемое значение в PHP, как показано в моем ответе.

Я бы также рекомендовал изучить ООП, что делает ваш код чище и легче для чтения. То же самое с ООП можно сделать следующим образом:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

Если в вашем запросе используются переменные, вы можете сделать то же самое, но с использованием подготовленных операторов.

$sql = "SELECT COUNT(*) FROM news WHERE category=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$count = $stmt->get_result()->fetch_row()[0];
echo $count;
0 голосов
/ 04 октября 2019

Следующий PHP может использоваться для выполнения запроса для вычисления суммы результатов:

$sql="SELECT COUNT(*) AS news_count FROM news";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
$count = $row['news_count'];
echo $count;
0 голосов
/ 04 октября 2019

Лучше использовать COUNT (*) вместо выбора всех строк и использования mysqli_num_rows().

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

$sql = "SELECT COUNT(*) FROM news";
$count = 0;
if ($result = mysqli_query($con, $sql)) {
    $row = mysqli_fetch_row($result);
    $count = $row[0];
}
echo $count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...