PHP PDO получить размер базы данных MYSQL
Пытаюсь конвертировать мой уродливый mysql_ в PDO, но у меня возникают трудности при создании аналога.
$rows = mysql_query("SHOW TABLE STATUS");
$dbSize = 0;
while ($row = mysql_fetch_array($rows)) {
$dbSize += $row['Data_length'] + $row['Index_length'];
}
$decimals = 2;
$mbytes = round($dbSize/(1024*1024),$decimals);
echo "$dbSize";
Я сделал следующее без успеха:
$sth = $conn->query('SHOW TABLE STATUS');
$dbSize = 0;
$dbSize = $sth->fetch(PDO::FETCH_ASSOC)["Data_length"];
$decimals = 2;
$mbytes = round($dbSize/(1024*1024),$decimals);
echo "$dbSize";
Это также не учитывает $Row["Index_length"]
Это сработало для меня:
$sth = $conn->query("SHOW TABLE STATUS");
$dbSize = 0;
$Result = $sth->fetchAll();
foreach ($Result as $Row){
$dbSize += $Row["Data_length"] + $Row["Index_length"];
}
$decimals = 2;
$mbytes = round($dbSize/(1024*1024),$decimals);
echo "$dbSize";
1 ответ
Решение
Старые версии PHP не допускают разыменования возвращаемых массивов. Смотрите пример 7 на этой странице. Чтобы исправить, попробуйте это:
$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";