PHP PDO Data_length всегда возвращает "0"

Ну, я просто пробую следующее около двух часов и не могу заставить его работать. Следующий код всегда будет возвращать "0". Пожалуйста, кто-нибудь может увидеть, в чем проблема. Это должно работать как шарм. А в PhpMyAdmin, когда я запускаю оператор, он работает правильно.

На самом деле, это скопированный / вставленный код из другого вопроса здесь, на SO, который был принят как рабочий ответ. Проверьте это здесь.

РЕДАКТИРОВАТЬ: Нет ошибок, генерируемых с помощью:error_reporting(-1); а также PDO::ERRMODE_EXCEPTION,

ОБНОВЛЕНИЕ: Определенно, я получаю только первую строку из запроса, где Data_lenght это "0". Я также проверил fetchAllи также пытается получить доступ к Data_length Индекс при получении. Неудачно.

<!DOCTYPE html>
<head>
<title></title>
</head>
<body>

<?php
try {
    error_reporting(-1);
    $host_name  = "my_hsot";
    $database   = "my_db";
    $user_name  = "my_user";
    $password   = "my_pwd";
    $conn = new PDO("mysql:host=$host_name;dbname=$database", $user_name, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sth = $conn->query('SHOW TABLE STATUS');
    $dbSize = 0;
    $row = $sth->fetch(PDO::FETCH_ASSOC);
    $dbSize = $row["Data_length"];
    $decimals = 2;  
    $mbytes = round($dbSize/(1024*1024),$decimals);
    echo $dbSize . "\n" . $row["Data_length"];
    } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>
</body>
</html>

Любая помощь приветствуется.

1 ответ

Решение

PDO всегда возвращает "0", потому что $row = $sth->fetch(PDO::FETCH_ASSOC); возвращает только первую строку запроса и индекс Data_length есть "0", так как это может быть любое другое значение.

Другие вопросы по тегам