44.5. Prepared Statements with PHPs PDO Module

Example 44.1.  dbconnect.php
<?php
  try {
    $dbh = new PDO(DSN, DBUSER, USERPWD);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  } catch (PDOException $e) {
    printf("<p>Connect failed for following reason: <br/>%s</p>\n",
      $e->getMessage());
  }

Example 44.2.  myDbMod.php
<?php
    require_once './includes/dbparams.inc.php';
    require_once './includes/dbconnect.inc.php';
    require_once './includes/Sellable.inc.php';
    require_once './includes/Television.inc.php';
    
    $inch = $_POST['tvs'];
    $tvno = $_POST['tvno'];
    
    $sql = "select inch, stocklevel";
    $sql .= " from tvs";
    $sql .= " where inch = :inch";
    try {
        $q = $dbh->prepare($sql);
        $q->bindValue(':inch', $inch);
        $q->execute();
        $row = $q->fetch();
        $tv = new Television($row['inch'], $row['stocklevel']);
    } catch(PDOException $e) {
        printf("<p>%s</p>\n", $e->getMessage());
    }
    $tv->sellItems($tvno);
    
    $sql = 'update tvs';
    $sql .= ' set stocklevel = :stocklevel';
    $sql .= ' where inch = :inch';
    try {
      $q = $dbh->prepare($sql);
      $q->bindValue(':stocklevel', $tv->getStockLevel());
      $q->bindValue(':inch', $tv->getScreenSize());
      $q->execute();
    } catch(PDOException $e) {
      die("Posting failed. Call a friend.<br/>".$e->getMessage());
    }
    header('Location: ./index.php?code=0');