2016-10-08 97 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」,因爲它可以是任何其他值。