mysql_fetch_array作为函数中的返回值无法正常工作

时间:2013-05-12 00:26:16

标签: php mysql

我正在尝试从名为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为资源,布尔值为

2 个答案:

答案 0 :(得分:0)

与其他语言不同,PHP or运算符ALWAYS返回一个布尔值。

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

答案 1 :(得分: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