【发布时间】:2017-04-17 01:24:00
【问题描述】:
我正在使用以下代码连接数据库,获取Data_length索引列,并根据数据计算数据库大小。
出于某种原因,PDO 将始终返回“0”,这是第一行中Data_length 索引的值。不管我做什么,我只得到第一行索引。
数据库是 MySQL,引擎是 MyISAM。
PHP 版本:5.5.38
MySQL 版本:5.5.50
这里是源代码。
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<?php
try {
error_reporting(-1);
$host_name = "my_host";
$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>
【问题讨论】:
-
因为
fetch总是返回一个行。试着不时阅读手册...... -
您确实需要阅读手册 ^^^^,但为了帮助您入门,
->fetchAll()可能会帮助您解决这个特定问题 -
@Fred,这个问题不完全是另一个问题的重复。另一个是错误的,因为它声明 Data_length 返回“0”。这个问题不一样。请重新打开这个,以便我删除另一个。
-
@nospor,实际上我已经这样做了,我也已经尝试过 fetchAll 等。这不是我需要的方法。而且,我已经阅读了一堆关于如何获取数据库大小的其他问题,他们都或多或少地以这种方式接近它。此外,此代码来自另一个检查为正确答案的问题:/。我刚刚添加了错误处理和我的凭据。
-
抱歉,我看不出这两个问题的代码有什么不同。