PHP PDO Data_length总是返回" 0"

时间:2016-10-08 13:15:46

标签: php pdo datalength

嗯,我现在只是尝试以下两个小时,我无法让它发挥作用。以下代码将始终返回" 0"。请问,任何人都可以看到问题出在哪里。这应该是一种魅力。在PhpMyAdmin中,当我运行该语句时,它可以正常工作。

实际上,这是来自SO的另一个问题的复制/粘贴代码,被接受为工作答案。请查看here

修改 使用以下命令不会引发错误: 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 个答案:

答案 0 :(得分:0)

PDO始终返回&#34; 0&#34;因为p4v只返回查询的第一行,而$row = $sth->fetch(PDO::FETCH_ASSOC);的索引有&#34; 0&#34;,因为它可能是任何其他值。