ich eine einfache Klasse in User.php
haben:PDO mit FETCH_CLASS holen gibt false zurück
class User {
private $id;
private $username;
private $password;
private $email;
private $first_name;
private $last_name;
private $active;
// Getters and setters generated by NetBeans...
}
Meine Datenbanktabelle users
genannt:
`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`)
Und einen Teil meiner UserDAO.php
Datei:
...
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;
}
}
...
Also, wenn ich anrufe, sagen wir, getById(1)
(oder mit jedem anderen Wert ID-Parameter), die Funktion führt alles aus und dann die var_dump($user)
Ausgänge bool(false)
.
Wenn ich nur stellen fetch()
statt fetch(PDO::FETCH_CLASS, "User")
wird die var_dump
geben folgendes:
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"
}
Ich habe auch mit fetch(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE,"User")
versucht. Nichts verändert sich.
Was mache ich falsch? Warum kann ich keine User
Klasseninstanz mit der fetch
erstellen?
Danke.
Das löste das Problem. Vielen Dank! :) – vtomic85