Получение количества строк и эхо - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть таблица MySQL, содержащая всего 10 строк, и 5 из этих строк имеют статус, установленный на номер 1, а остальные - на 0. Чего я пытаюсь добиться, так это простейшего метода отображения общего количествастроки, для которых установлен статус 1. 1. 1001 *

<?php echo (empty( $this->fetchData[2][0]['pickup_status'] ) ? 'No New Pickups' : $this->fetchData[2][0]['pickup_status'] ); ?>

Приведенный выше код должен показывать «5» вместо «Нет новых пикапов», как я могу заставить эту работу работать?Я все еще хочу, чтобы "Нет новых пикапов" отображалось, если статус не номер 1.

HTML-код

<div class='dashicon'>

            <a href='<?php echo _URL_PATH; ?>packages/pickups'>
            <span class="notify-badge">PHP ECHO</span>
                <img src='<?php echo _URL_PATH . IMGS_PATH; ?>bicon_pickups.png' />
            </a>
        </div>

        <div class='dashname'>
            Pickup Requests
        </div>

        <div class='dashdesc'>
            Manage package pickup request details
        </div>

    </div>

<?php

$result=mysqli_query("SELECT * FROM sysPickupRequest WHERE pickup_status = 1");
$data=mysqli_fetch_assoc($result);
echo $data['total'];

?>

1 Ответ

0 голосов
/ 15 февраля 2019

Ваш запрос не делает то, что вы хотите.

 SELECT * FROM sysPickupRequest WHERE pickup_status = 1;

Это возвращает подробности в потенциально большом количестве строк и, возможно, без строк.То, что он не возвращает, является подсчетом всего.Вы хотите что-то вроде этого вместо этого.Он возвращает одну строку и один столбец, необходимое вам количество.

 SELECT COUNT(*) status1 FROM sysPickupRequest WHERE pickup_status = 1;

Или, если вам нужно общее количество строк и число со статусом 1, вы можете сделать это:

 SELECT SUM(pickup_status = 1) AS status1, COUNT(*) AS total FROM sysPickupRequest;

Это работает, потому что выражение pickup_status = 1 имеет значение 1, когда оно истинно, и значение 0, когда оно ложно.Вы SUM() получаете кучу единиц и нулей.

Так что в вашем случае это работает так.(Я не отлаживал этот код.)

$query = "SELECT SUM(pickup_status = 1) AS status1, COUNT(*) AS total FROM sysPickupRequest;"
$status1 = 0;
if ($resultSet=mysqli->query($query)) {
     if ($row=$resultSet->fetch_assoc($resultSet)) {
         $status1 = $row['status1'];
     } else die 'fetch error';
} else die 'query error';
$pickupStatus = $status1 != 0 ? $status1 :  'No New Pickups';
echo $pickupStatus;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...