2016-10-08 63 views
0

嗯,我只是尝试以下两个小时左右,我不能得到它的工作。以下代码将始终返回“0”。请问任何人都可以看到问题在哪里。这应该是一种魅力。而在PhpMyAdmin中,当我运行该语句时,它可以正常工作。PHP PDO Data_length总是返回“0”

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

编辑: 没有错误使用抛出: error_reporting(-1);PDO::ERRMODE_EXCEPTION

UPDATE: 肯定地说,我从查询,其中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> 

任何帮助表示赞赏。

回答

0

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