Zeile 8 | Zeile 8 |
---|
* */
|
* */
|
class dbpdoEngine {
/**
| class dbpdoEngine { /**
|
* The database class to store PDO objects
|
* The database class to store PDO objects
|
* * @var object
| * * @var PDO */ private $db;
/** * The last query resource that ran * * @var PDOStatement */ public $last_query;
/** * Array used to seek through result sets. This is used when using the `fetch_field` method with a row specified. * * @var array Array keyed by object hashes for {@see PDOStatement} instances.
|
*/
|
*/
|
public $db;
| private $seek_array = array();
|
/**
|
/**
|
* The last query resource that ran * * @var object */ public $last_query = "";
public $seek_array = array();
public $queries = 0;
/** * Connect to the database. * * @param string The database DSN. * @param string The database username. (depends on DSN) * @param string The database user's password. (depends on DSN) * @param array The databases driver options (optional) * @return boolean True on success
| * Connect to the database. * * @param string $dsn The database DSN. * @param string $username The database username. (depends on DSN) * @param string $password The database user's password. (depends on DSN) * @param array $driver_options The databases driver options (optional) * * @throws Exception Thrown when failing to connect to the database.
|
*/ function __construct($dsn, $username="", $password="", $driver_options=array()) { try
|
*/ function __construct($dsn, $username="", $password="", $driver_options=array()) { try
|
{ $this->db = new PDO($dsn, $user, $password, $driver_options); }
| { $driver_options = array_merge( $driver_options, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, ) );
$this->db = new PDO($dsn, $username, $password, $driver_options); }
|
catch(PDOException $exception) {
|
catch(PDOException $exception) {
|
die('Connection failed: '.$exception->getMessage());
| throw new Exception('Unable to connect to database server');
|
}
|
}
|
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return true;
| |
}
/** * Query the database.
|
}
/** * Query the database.
|
* * @param string The query SQL. * @return resource The query data. */ function query($string) { ++$this->queries;
| * * @param string $string The query SQL. * * @return PDOStatement The query data. */ public function query($string) {
|
$query = $this->db->query($string, PDO::FETCH_BOTH);
|
$query = $this->db->query($string, PDO::FETCH_BOTH);
|
$this->last_query = $query;
$query->guid = $this->queries;
| $this->last_query = $query;
|
return $query;
|
return $query;
|
}
| }
|
/** * Return a result array for a query. *
|
/** * Return a result array for a query. *
|
* @param resource The query resource.
| * @param PDOStatement $query The query resource. * @param int $resulttype One of PDO's constants: FETCH_ASSOC, FETCH_BOUND, FETCH_CLASS, FETCH_INTO, FETCH_LAZY, FETCH_NAMED, FETCH_NUM, FETCH_OBJ or FETCH_BOTH
|
* @return array The array of results.
|
* @return array The array of results.
|
*/ function fetch_array($query) { if(!is_object($query)) { return; }
if($this->seek_array[$query->guid]) { $array = $query->fetch(PDO::FETCH_BOTH, $this->seek[$query->guid]['offset'], $this->seek[$query->guid]['row']);
| */ public function fetch_array($query, $resulttype=PDO::FETCH_BOTH) { switch($resulttype) { case PDO::FETCH_ASSOC: case PDO::FETCH_BOUND: case PDO::FETCH_CLASS: case PDO::FETCH_INTO: case PDO::FETCH_LAZY: case PDO::FETCH_NAMED: case PDO::FETCH_NUM: case PDO::FETCH_OBJ: break; default: $resulttype = PDO::FETCH_BOTH; break; }
$hash = spl_object_hash($query);
if(isset($this->seek_array[$hash])) { $array = $query->fetch($resulttype, $this->seek_array[$hash]['offset'], $this->seek_array[$hash]['row']);
|
} else {
|
} else {
|
$array = $query->fetch(PDO::FETCH_BOTH);
| $array = $query->fetch($resulttype);
|
}
return $array; }
|
}
return $array; }
|
/** * Moves internal row pointer to the next row * * @param resource The query resource. * @param int The pointer to move the row to. */ function seek($query, $row) { if(!is_object($query)) { return; }
$this->seek_array[$query->guid] = array('offset' => PDO::FETCH_ORI_ABS, 'row' => $row); }
| /** * Moves internal row pointer to the next row * * @param PDOStatement $query The query resource. * @param int $row The pointer to move the row to. */ public function seek($query, $row) { $hash = spl_object_hash($query);
$this->seek_array[$hash] = array('offset' => PDO::FETCH_ORI_ABS, 'row' => $row); }
|
/** * Return the number of rows resulting from a query. *
|
/** * Return the number of rows resulting from a query. *
|
* @param resource The query resource.
| * @param PDOStatement $query The query resource.
|
* @return int The number of rows in the result. */
|
* @return int The number of rows in the result. */
|
function num_rows($query)
| public function num_rows($query)
|
{
|
{
|
if(!is_object($query)) { return; }
if(is_numeric(stripos($query->queryString, 'SELECT')))
| if(stripos($query->queryString, 'SELECT') !== false)
|
{ $query = $this->db->query($query->queryString); $result = $query->fetchAll();
| { $query = $this->db->query($query->queryString); $result = $query->fetchAll();
|
Zeile 134 | Zeile 145 |
---|
else { return $query->rowCount();
|
else { return $query->rowCount();
|
} }
/**
| } }
/**
|
* Return the last id number of inserted data.
|
* Return the last id number of inserted data.
|
* * @param string The name of the insert id to check. (Optional)
| * * @param string|null $name The name of the insert id to check. (Optional)
|
* @return int The id number.
|
* @return int The id number.
|
*/ function insert_id($name="")
| */ public function insert_id($name=null)
|
{ return $this->db->lastInsertId($name);
|
{ return $this->db->lastInsertId($name);
|
}
| }
|
/** * Return an error number. *
|
/** * Return an error number. *
|
* @param resource The query resource.
| * @param PDOStatement $query The query resource.
|
* @return int The error number of the current error.
|
* @return int The error number of the current error.
|
*/ function error_number($query) { if(!is_object($query) || !method_exists($query, "errorCode")) { return; }
$errorcode = $query->errorCode();
return $errorcode; }
/**
| */ public function error_number($query) { if(!method_exists($query, "errorCode")) { return 0; }
return $query->errorCode(); }
/**
|
* Return an error string.
|
* Return an error string.
|
* * @param resource The query resource. * @return int The error string of the current error. */ function error_string($query) { if(!is_object($query) || !method_exists($query, "errorInfo"))
| * * @param PDOStatement $query The query resource. * @return array The error string of the current error. */ public function error_string($query) { if(!method_exists($query, "errorInfo"))
|
{ return $this->db->errorInfo(); }
|
{ return $this->db->errorInfo(); }
|
|
|
return $query->errorInfo();
|
return $query->errorInfo();
|
}
/** * Roll back the last query. * * @return boolean true on success, false otherwise. */ function roll_back() { //return $this->db->rollBack();
| |
}
/** * Returns the number of affected rows in a query. *
|
}
/** * Returns the number of affected rows in a query. *
|
| * @param PDOStatement $query
|
* @return int The number of affected rows. */
|
* @return int The number of affected rows. */
|
function affected_rows($query)
| public function affected_rows($query)
|
{ return $query->rowCount(); }
| { return $query->rowCount(); }
|
Zeile 204 | Zeile 205 |
---|
/** * Return the number of fields. *
|
/** * Return the number of fields. *
|
* @param resource The query resource.
| * @param PDOStatement $query The query resource.
|
* @return int The number of fields. */
|
* @return int The number of fields. */
|
function num_fields($query)
| public function num_fields($query)
|
{ return $query->columnCount(); }
|
{ return $query->columnCount(); }
|
function escape_string($string)
| /** * Escape a string according to the pdo escape format. * * @param string $string The string to be escaped. * @return string The escaped string. */ public function escape_string($string)
|
{ $string = $this->db->quote($string);
|
{ $string = $this->db->quote($string);
|
// Remove ' from the begginging of the string and at the end of the string, because we already use it in insert_query
| // Remove ' from the beginning of the string and at the end of the string, because we already use it in insert_query
|
$string = substr($string, 1); $string = substr($string, 0, -1);
| $string = substr($string, 1); $string = substr($string, 0, -1);
|
Zeile 226 | Zeile 233 |
---|
/** * Return a selected attribute *
|
/** * Return a selected attribute *
|
* @param constant The attribute to check.
| * @param string $attribute The attribute to check.
|
* @return string The value of the attribute. */
|
* @return string The value of the attribute. */
|
function get_attribute($attribute)
| public function get_attribute($attribute)
|
{
|
{
|
$attribute = $this->db->getAttribute(constant("PDO::".$attribute.""));
| $attribute = $this->db->getAttribute(constant("PDO::{$attribute}"));
|
return $attribute; }
| return $attribute; }
|