Получить количество строк Mysql в PHP - PullRequest
0 голосов
/ 03 октября 2018

В приведенном ниже коде, когда я var_dump($result) вижу, что нужные данные находятся там ... но мне еще не удалось получить к ним доступ.

Код:

try {   
    $query = new dbquery(Connection::make($dbconfig['dbinfo']));
    $count = $query->runSQL("select count(*) from table_name");

    $result = $count->fetchAll();
    var_dump($result);
    echo $result[0];
    echo $result[1];
}
catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

SQL:

public function runSQL($sql, $params = NULL) {
    //Prepares the SQL Statement you pass through
    $statement = $this->pdo->prepare($sql);

    //Binds the Parameters I pass through on execute, so no need for seperate $statement->bindParam()
    $statement->execute($params);

    //Returns the statement.
    return $statement; 
}

вывод var_dump:

array(1) { [0]=> array(2) { ["count(*)"]=> string(1) "3" [0]=> string(1) "3" } } Array

мне нужен ключ ["count(*)], значение 3

I 'Я попробовал следующее, и никто не дает мне правильное значение:

echo $result[0];
echo $result[1];
echo $result['count(*)'];

Может кто-нибудь, пожалуйста, сообщите, где я иду не так, все, что я хочу знать, это количество строк.

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Вам необходимо избегать использования fetchAll в случаях, когда возвращается только 1 строка (COUNT, SUM или любые групповые функции)

Вы можете использовать

echo $result[0][0];

или

$result = $count->fetchOne(); #or $count->fetch(); read the docs to the right method
echo $result[0];
0 голосов
/ 03 октября 2018

Команда SQL для получения количества строк:

select count(*) as alias from table_name
0 голосов
/ 03 октября 2018

В результате вы получаете массив внутри массива.Вы можете сделать следующее:

echo $result[0][0];

ИЛИ

echo $result[0]['count(*)'];

Заметьте , что это хорошая привычка делать алиасинг в запроседля лучшей читаемости.Например, COUNT(*) может быть псевдонимом total_count:

$count = $query->runSQL("select count(*) AS total_count from table_name");

Теперь вы можете получить доступ к общему количеству строк следующим образом:

echo $result[0]['total_count'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...