2016-05-05 8 views
0

を返します。PDOはFETCH_CLASSでフェッチ私は<code>User.php</code>に単純なクラスを持っている偽

class User { 
    private $id; 
    private $username; 
    private $password; 
    private $email; 
    private $first_name; 
    private $last_name; 
    private $active; 
    // Getters and setters generated by NetBeans... 
} 

私のデータベーステーブルがusersの名前:

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`username` varchar(100) NOT NULL, 
`password` varchar(100) NOT NULL, 
`email` varchar(100) NOT NULL, 
`first_name` varchar(100) DEFAULT NULL, 
`last_name` varchar(100) DEFAULT NULL, 
`active` int(10) unsigned DEFAULT '0', 
PRIMARY KEY (`id`), 
UNIQUE KEY `id_UNIQUE` (`id`), 
UNIQUE KEY `username_UNIQUE` (`username`), 
UNIQUE KEY `email_UNIQUE` (`email`) 

そして、私のUserDAO.phpファイルの一部:

... 
require_once './db/DBConn.php'; 
require_once './user/User.php'; 
... 
public static function getById($id) { 
    try { 
     $db = DBConn::getInstance(); 
     $query = "SELECT * FROM users WHERE id=:id"; 
     $stmt = $db->getConn()->prepare($query); 
     $stmt->execute(array('id' => $id)); 
     $user = $stmt->fetch(PDO::FETCH_CLASS, "User"); 
     var_dump($user); 
     return $user; 
    } catch (PDOException $e) { 
     echo "<br/>ERROR: User fetching by ID failed!<br/>"; 
     return 0; 
    } 
} 
... 

私が電話すると、getById(1)(または他の任意の値idパラメータ)、関数はすべてを実行し、var_dump($user)の出力はbool(false)です。

私だけfetch()代わりfetch(PDO::FETCH_CLASS, "User")のを置く場合は、var_dumpは以下を提供します:

array(14) { 
    ["id"]=> 
    string(2) "1" 
    [0]=> 
    string(2) "1" 
    ["username"]=> 
    string(4) "abcd" 
    [1]=> 
    string(4) "abcd" 
    ["password"]=> 
    string(60) "$2y$10$wTCajtRU1xXf6Z65dZYjk.mx3tClFLujshS49SvYIuGW/lDZSH3nK" 
    [2]=> 
    string(60) "$2y$10$wTCajtRU1xXf6Z65dZYjk.mx3tClFLujshS49SvYIuGW/lDZSH3nK" 
    ["email"]=> 
    string(13) "[email protected]" 
    [3]=> 
    string(13) "[email protected]" 
    ["first_name"]=> 
    string(7) "John" 
    [4]=> 
    string(7) "John" 
    ["last_name"]=> 
    string(13) "Johnson" 
    [5]=> 
    string(13) "Johnson" 
    ["active"]=> 
    string(1) "0" 
    [6]=> 
    string(1) "0" 
} 

私もfetch(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE,"User")で試してみました。何も変わりません。

私は間違っていますか? fetchUserクラスインスタンスを作成できないのはなぜですか?

ありがとうございました。

答えて

1

フェッチでPDO::FETCH_CLASSを使用することはできません。

ほかに
public static function getById($id) { 
    $db = DBConn::getInstance(); 
    $query = "SELECT * FROM users WHERE id=:id"; 
    $stmt = $db->getConn()->prepare($query); 
    $stmt->execute(array('id' => $id)); 
    $stmt->setFetchMode(PDO::FETCH_CLASS, 'User'); 
    return $stmt->fetch(); 
} 

、あなたがそれらを報告するエラーの例外をキャッチすることはありませんので、ご注意ください:あなたは、事前にsetFetchMode()呼び出しを行う必要があります。それはあなたのコードを汚く、維持不能で不安定にします。

+0

それが問題を解決しました。ありがとう! :) – vtomic85

関連する問題