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>

任何帮助表示赞赏。

4

1 回答 1

0

PDO 总是返回“0”,因为$row = $sth->fetch(PDO::FETCH_ASSOC);只返回查询的第一行,并且索引Data_length为“0”,因为它可以是任何其他值。

于 2016-10-08T20:07:22.050 回答