-1

我正在尝试从名为 DB 的类中的方法返回一个数组

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是资源,给定的布尔值

4

2 回答 2

0

与其他一些语言不同,PHPor运算符总是返回一个布尔值。

所以,mysql_query($query) or die( mysql_error() . '<br>' . $query)总是给你一个布尔值,即使mysql_query返回一个资源(因此评估为真)。

于 2013-05-12T00:31:08.290 回答
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

于 2013-05-12T02:30:29.533 回答