2014-01-25 27 views
1

PHP的說,它無法轉換爲INT:如何獲得使用PDO的列的總和?

注意:類PDOStatement對象的對象不能轉換在C INT:\ XAMPP \ htdocs中\網絡學習\網頁\學生\ upload.php的上線76:

   $userLoggedIn = $_SESSION['username']; 

       $stmt = $conn->prepare( "SELECT s.grade_level, s.section 
             FROM tblusers as u 
             JOIN tblstudents as s 
             ON u.username = s.username 
             WHERE u.username = :username"); 
             $stmt->execute(array(':username' => $userLoggedIn)); 

       $file = $_FILES['file']['name']; 
       $filesize = $_FILES['file']['size']; 
       $filepath = "../../assets/uploads/" . $file; 

       $filelimit = $conn->prepare("SELECT SUM(f.filesize) 
              FROM tblfiles AS f 
              JOIN tblstudents AS s 
              ON f.uploader = s.username 
              WHERE f.uploader = ':username'"); 
       $filelimit->execute(array(':username'=>$userLoggedIn)); 

這是行76:如果($ filelimit> 1048576)

+1

有用於獲取一筆沒有區別。您獲取的方式與其他數據完全相同。要學習如何使用PDO獲取數據,您需要**遵循**教程**。 –

回答

0

我猜你有問題,從sum(f.filesize)所獲得的價值。

嘗試給它像

SELECT SUM(f.filesize) as filesize 

一個別名,然後通過這個filesize

+1

這不是提問者問題的原因。他們試圖讀取PDOStatement對象$ filelimit,就好像它是查詢的實際返回值一樣。 – MrVimes

0

$filelimit檢索和是PDOStatement對象。要獲得結果集,您必須從語句中獲取結果集。

MrVimes有完整的答案。

0

$ filelimit是一個PDO對象。不是一個整數。你需要使用fetch()

$row = $filelimit->fetch(); 

$filelimitvalue = $row[0]; 

,然後獲得來自對象的查詢結果中的if語句上線76 ...

if($filelimitvalue > 1048576) 
+0

哇謝謝我忘了使用取回 –

+0

沒問題。開始使用PDO時很容易犯錯誤。如果您滿意,請記住接受其中一個答案。 – MrVimes