2015-08-08 120 views
0

嗨我想在php中使用pdo查詢數據庫以返回數據庫中的所有信息,但我正確連接到數據庫,但是當我嘗試返回所有數據庫時信息和打印我得到這樣的結果從我的函數返回>數據庫查詢沒有按預期返回php pdo

PDOStatement對象對象([的queryString] => SELECT * FROM用戶)

我想爲返回整個數據庫信息的功能。這裏是我的代碼,你的幫助將不勝感激,謝謝。

public function resetpassword() 
    { 

     try 
     { 
      $conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = 'SELECT * FROM users'; 

      $result = $conn->query($sql); 

      return $result; 

      $conn = null; 
     } 
     catch(PDOException $e) 
     { 
      return 'Database Error'; 
     } 

    } 

這裏是我用來打印從該函數的結果代碼:

print_r ($usr->resetpassword()); 
+0

首先創建在'resetpassword function'你的數據庫連接?還是你在每個功能中創建它?另外,您實際上必須獲取結果,但不能返回選擇查詢。 – Script47

+1

嘗試['return $ result-> fetchall();'](http://php.net/manual/en/pdostatement.fetchall.php)而不是'return $ result;' – Sean

+0

''conn = null; '永遠不會被執行。但是,無論如何,這並沒有什麼區別,因爲它本地變量無論如何... – arkascha

回答

1

$結果是結果集PDOStatement對象的對象。如果您使用fetchAll(),它將以數據陣列的形式提取數據。雖然您可以循環訪問PDOStatement對象結果集並提取數據。就像這樣:

foreach ($conn->query($sql) as $row) { 
echo $row['yourColumnName']; 
} 

試試這個:

<?php 

    class Database{ 

    public function resetpassword() 
     { 

      try 
      { 
       $conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $sql = 'SELECT * FROM users'; 

       $s = $conn->query($sql); 

       return $s->fetchAll(PDO::FETCH_ASSOC); 

       $conn = null; 
      } 
      catch(PDOException $e) 
      { 
       return 'Database Error'; 
      } 

     } 

    } 

    $usr=new Database(); 

    var_dump($usr->resetpassword()); 
+0

如果有更多的細節比「嘗試這個:」和一個代碼塊更好,答案總是更好。分享爲什麼這與OPs代碼不同。我看到你做了什麼,但其他人可能不會。 – Sean

+0

正如上面的註釋所述,刪除'$ conn = null',因爲return語句會阻止它執行。 – Script47