. */ interface IDB { /** * Fetch a row from a table * * @param string $table * @param int $id * @return array associative array */ public function fetchRow($table, $id); /** * Select data * * @param string $query * @return int number of rows, -1 in case of error */ public function select($query); public function select2($query); /** * Return associative array of last select * * @return array associative array of last select */ public function fetchAssoc(); public function fetchAssoc2(); /** * Adjusts the result pointer to an arbitrary row in the result * * @param int row */ public function dataSeek($row); public function dataSeek2($row); /** * Free result */ public function freeResult(); public function freeResult2(); /** * Return number of rows in result */ public function numRows(); public function numRows2(); /** * Insert data into a table * * @param string $table * @param array $data * @return int insertId, -1 in case of error */ public function insert($table, $data); /** * Update a record * * @param string $table * @param int $id * @param array $data * @param string $idField * @return boolean true on success, false otherwise */ public function update($table, $id, $data, $idField = "id"); /** * Delete data * @param string $table * @param int or array of int $ids * @param string $idField */ public function delete($table, $ids, $idField = "id"); /** * Escape field for usage in select query. In case field contains a dot (.), it will be split and both sides will be escaped. May be an array * of several fields * * @param string $field * @return string escaped field */ public function escapeField($field); /** * Escape value for usage in select query * * @param string $value * @return string escaped value */ public function escapeValue($value); /** * Return the error generated by last query * * @return string error */ public function getLastError(); } interface DBMethod { public function toQuery(IDB $db); } class DBMethodConcat implements DBMethod { private $field; private $appendValue; public function __construct($field, $appendValue) { $this->field = $field; $this->appendValue = $appendValue; } public function toQuery(IDB $db) { return "CONCAT(" . $db->escapeField($this->field) . ", " . $db->escapeValue($this->appendValue) . ")"; } } class DBMethodCount implements DBMethod { private $field; public function __construct($field) { $this->field = $field; } public function toQuery(IDB $db) { return "COUNT(" . $db->escapeField($this->field) . ")"; } } class DBMethodLeft implements DBMethod { private $field; private $length; public function __construct($field, $length) { $this->field = $field; $this->length = $length; } public function toQuery(IDB $db) { return "LEFT(" . $db->escapeField($this->field) . ", " . $db->escapeValue($this->length) . ")"; } } class DBMethodLength implements DBMethod { private $field; public function __construct($field) { $this->field = $field; } public function toQuery(IDB $db) { return "LENGTH(" . $db->escapeField($this->field) . ")"; } } class DBMethodLower implements DBMethod { private $field; public function __construct($field) { $this->field = $field; } public function toQuery(IDB $db) { return "LOWER(" . $db->escapeField($this->field) . ")"; } } class DBMethodMax implements DBMethod { private $field; public function __construct($field) { $this->field = $field; } public function toQuery(IDB $db) { return "MAX(" . $db->escapeField($this->field) . ")"; } } class DBMethodMin implements DBMethod { private $field; public function __construct($field) { $this->field = $field; } public function toQuery(IDB $db) { return "MIN(" . $db->escapeField($this->field) . ")"; } } ?>