2013-05-12 65 views
-1

我試圖得到一個陣列從一個方法返回一個名爲DB
mysql_fetch_array作爲函數返回值不正常工作

class DB extends SomeClass { 
    public static function query() { 
    $query = "SELECT title, excerpt FROM table1"; 
    $items = mysql_query($query) or die(mysql_error() . '<br>' . $query); 
    return $items 
    } 
} 

while ($item = mysql_fetch_array(DB::query())): 
extract($item); 
echo $title . '<br>'; 
echo $excerpt; 

類中,但它不工作,錯誤說:
警告:mysql_fetch_array()預計參數1是資源,鑑於布爾

+0

它不重複,我的查詢是正確的,並返回正確的布爾值,我問如何返回數組,而不是什麼是我的錯在查詢 和感謝減:/ – Husamuddin 2013-05-12 11:03:43

回答

0

您應該使用PDO類而不是MySQL過程函數。

類定義:

class DB { 

    const DSN = 'mysql:dbname=sample;host=localhost'; 
    const USER = 'testuser'; 
    const PASSWORD = 'testuser'; 

    private $db; 

    public function __construct() { 
     $this->db = new PDO(self::DSN, self::USER, self::PASSWORD); 
    } 

    public function getItems() { 
     $query = 'SELECT title, excerpt FROM table1'; 
     $stmt = $this->db->query($query); 
     return $stmt->fetchAll(PDO::FETCH_ASSOC); 
    } 

} 

如何使用:

try { 

    $db = new DB; 
    print_r($db->getItems()); 

} catch (Exception $e) { 

    echo $e->getMessage(); 

} 

欲瞭解更多信息,請參閱手冊。
http://www.php.net/manual/en/book.pdo.php

0

與其他一些語言中,PHP or操作總是返回一個布爾值。

因此,mysql_query($query) or die(mysql_error() . '<br>' . $query)總是會給你一個布爾值,即使mysql_query返回資源(因此評估爲true)。