Advertisement
Guest User

PDO fetch() into object

a guest
Apr 9th, 2012
814
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.32 KB | None | 0 0
  1. <?php
  2.  
  3. $pdo = new PDO("sqlite::memory:");
  4. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5.  
  6. $sql = <<< EOS
  7. CREATE  TABLE users (
  8.   id INTEGER PRIMARY KEY,
  9.   username CHAR NOT NULL,
  10.   password CHAR NOT NULL
  11. );
  12. INSERT INTO users (username, password) VALUES ('foo', 'soh7uido');
  13. INSERT INTO users (username, password) VALUES ('bar', 'sha3ma5u');
  14.  
  15. EOS;
  16. $pdo->exec($sql);
  17.  
  18. class User {
  19.     protected $id;
  20.     protected $username;
  21.     protected $password;
  22.  
  23.     public function getId() {
  24.         return $this->id;
  25.     }
  26.  
  27.     public function getUsername() {
  28.         return $this->username;
  29.     }
  30. }
  31.  
  32. echo "-----------------------------------------------------------------\n";
  33. echo "case 1: use PDO::FETCH_CLASS, works:\n";
  34.  
  35. $stmt = $pdo->prepare("SELECT * FROM users WHERE username = 'foo'");
  36. $stmt->execute();
  37.  
  38. $stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
  39.  
  40. // works well
  41. $user = $stmt->fetch();
  42. echo "User: {$user->getUsername()} loaded, id: {$user->getId()}\n";
  43.  
  44. echo "-----------------------------------------------------------------\n";
  45. echo "case 1: use PDO::FETCH_INTO, doesn't work, throws fatal error:\n";
  46.  
  47. $stmt = $pdo->prepare("SELECT * FROM users WHERE username = 'foo'");
  48. $stmt->execute();
  49.  
  50. $user = new User();
  51. $stmt->setFetchMode(PDO::FETCH_INTO, $user);
  52.  
  53. $user = $stmt->fetch();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement