を返します。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")
で試してみました。何も変わりません。
私は間違っていますか? fetch
でUser
クラスインスタンスを作成できないのはなぜですか?
ありがとうございました。
それが問題を解決しました。ありがとう! :) – vtomic85