--- /dev/null
+<?php
+
+ require_once('protected/required.php');
+
+ class PdoProductManager extends AbstractPdoManager {
+
+ public function createProduct($product) {
+
+ $query = $this -> pdo -> prepare(
+ 'INSERT INTO products (name) VALUES (:name);'
+ );
+ $query -> bindValue(':name', $product -> getName());
+ $query -> execute();
+ }
+
+ public function updateProduct($product) {
+
+ $query = $this -> pdo -> prepare(
+ 'UPDATE products
+ SET name = :name
+ WHERE id = :id'
+ );
+ $query -> bindValue(':id', $product -> getId());
+ $query -> bindValue(':name', $product -> getName());
+ $query -> execute();
+ }
+
+ public function getProduct($id) {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM products WHERE id = :id');
+ $query -> bindValue(':id', $id);
+ $query -> execute();
+
+ $result = $query -> fetch(PDO::FETCH_ASSOC);
+ $product = new Product($result['id'], $result['name']);
+
+ $query->closeCursor();
+
+ return $product;
+ }
+
+ public function getProductByName($name) {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM products WHERE name = :name');
+ $query -> bindValue(':name', $name);
+ $query -> execute();
+
+ $result = $query -> fetch(PDO::FETCH_ASSOC);
+ $product = new Product($result['id'], $result['name']);
+
+ $query->closeCursor();
+
+ return $product;
+ }
+
+ public function getProducts() {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM products');
+ $query -> execute();
+
+ $results = $query -> fetchAll(PDO::FETCH_ASSOC);
+ $products = array();
+ foreach ($results as $result) {
+ $products[] = new Product($result['id'], $result['name']);
+ }
+
+ $query->closeCursor();
+
+ return $products;
+ }
+
+ public function getNamesOfProducts() {
+
+ $query = $this -> pdo -> prepare('SELECT name FROM products');
+ $query -> execute();
+
+ $results = $query -> fetchAll(PDO::FETCH_ASSOC);
+ $names = array();
+ foreach ($results as $result) {
+ $names[] = $result['name'];
+ }
+
+ $query->closeCursor();
+
+ return $names;
+ }
+
+ public function removeProduct($product) {
+
+ $query = $this -> pdo -> prepare('DELETE FROM products WHERE id = :id');
+ $query -> bindValue('id', $product -> getId());
+ $query -> execute();
+ }
+
+ }
+
+?>