Source for file SqlComplexPKRecord.php

Documentation is available at SqlComplexPKRecord.php

  1. <?php
  2.     /**
  3.      * Contains the complex primary key sql record class
  4.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  5.      * @package MIPHPF
  6.      */
  7.     
  8.     /**
  9.      * Include the db class
  10.      */
  11.     if (class_exists('miStaticDBUtil'false== false{
  12.         require_once(dirname(__FILE__'/../database/StaticDBUtil.php');
  13.     }
  14.  
  15.     /**
  16.      * SQL Record managerment class for records with complex primary keys
  17.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  18.      * @package MIPHPF
  19.      */
  20.     class miSqlComplexPKRecord extends miSqlRecord {
  21.         
  22.         /**
  23.          * Creates miSqlComplexPKRecord object
  24.          * 
  25.          * @access public
  26.          * @param string $table the table name
  27.          * @param array $primaryKey array of the primary key columns
  28.          */
  29.         public function __construct($table$primaryKey)
  30.         {
  31.             parent::__construct($table$primaryKey);
  32.         }
  33.         
  34.         /**
  35.          * Reads the record from the db by primary key
  36.          * 
  37.          * @param array $values an associative array with the values of each of the primary key columns
  38.          * @throws miDBException
  39.          */
  40.         public function readPK($values)
  41.         {
  42.             $query 'SELECT * FROM ' $this->_table . ' WHERE ' $this->getPKWhereSql($values);
  43.             $rows miStaticDBUtil::execSelect($query);
  44.             if (count($rows1{
  45.                 throw new miDBException('Record not found'miDBException::EXCEPTION_RECORD_NOT_FOUND);
  46.             }
  47.             
  48.             $this->_row = $rows[0];
  49.         }
  50.         
  51.         /**
  52.          * Inserts the record into the db
  53.          * 
  54.          * @access public
  55.          * @return void 
  56.          * @throws miDBException
  57.          */
  58.         public function insert()
  59.         {
  60.             miStaticDBUtil::execInsert($this->_table$this->_row);
  61.         }
  62.         
  63.         /**
  64.          * Updates the record in the db
  65.          * 
  66.          * @access public
  67.          * @return void 
  68.          * @throws miDBException
  69.          */
  70.         public function update()
  71.         {
  72.             $data array();
  73.             foreach ($this->_row as $field => $fieldValue{
  74.                 if (in_array($field$this->_primaryKey))
  75.                     continue;
  76.                 $data[$field '="' sql_escape_string($fieldValue'"';
  77.             }
  78.  
  79.             $query 'UPDATE ' $this->_table . ' SET ';
  80.             $query .= implode(','$data);
  81.             $query .= ' WHERE ' $this->getPKWhereSql($this->_row);
  82.             
  83.             miStaticDBUtil::execSQL($query);
  84.         }
  85.         
  86.         /**
  87.          * Delete a record in the db table
  88.          * 
  89.          * @access public
  90.          */
  91.         public function delete()
  92.         {
  93.             $query 'DELETE FROM ' $this->_table . ' WHERE ' $this->getPKWhereSql($this->_row);
  94.             miStaticDBUtil::execSQL($query);
  95.         }
  96.         
  97.         /**
  98.          * Returns the where sql clauses for selecting by primary key
  99.          * 
  100.          * @access protected
  101.          * @return string the sql code
  102.          */
  103.         protected function getPKWhereSql($values)
  104.         {
  105.             $whereSql array();
  106.             foreach ($this->_primaryKey as $primaryKey{
  107.                 $whereSql[$primaryKey '="' sql_escape_string($values[$primaryKey]'"';
  108.             }
  109.             return implode(' AND '$whereSql);
  110.         }
  111.     }
  112. ?>

Documentation generated on Thu, 08 May 2008 16:57:32 +0300 by phpDocumentor 1.4.1