-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;

しかし、それは機能しません。エラーは次のように述べています

4

2 に答える 2

0

MySQL 手続き型関数の代わりに PDO クラスを使用する必要があります。

クラス定義:

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 に答える
0

他のいくつかの言語とは異なり、PHPor演算子は常にブール値を返します。

そのため、リソースが返されたmysql_query($query) or die( mysql_error() . '<br>' . $query)場合でも、常にブール値がmysql_query返されます (したがって、true と評価されます)。

于 2013-05-12T00:31:08.290 に答える