Zeile 8 | Zeile 8 |
---|
* */
|
* */
|
class dbpdoEngine {
/**
| class dbpdoEngine { /**
|
* The database class to store PDO objects
|
* The database class to store PDO objects
|
* * @var object */ public $db;
| * * @var PDO */ private $db;
|
/** * The last query resource that ran *
|
/** * The last query resource that ran *
|
* @var object
| * @var PDOStatement
|
*/
|
*/
|
public $last_query = "";
public $seek_array = array();
public $queries = 0;
| 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. */ private $seek_array = array();
|
/** * Connect to the database. *
|
/** * 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
| * @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 {
|
| $driver_options = $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) {
|
$this->db = new PDO($dsn, $username, $password, $driver_options); } 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.
| * @param string $string The query SQL. * * @return PDOStatement The query data.
|
*/
|
*/
|
function query($string)
| public function query($string)
|
{
|
{
|
++$this->queries;
| |
$query = $this->db->query($string, PDO::FETCH_BOTH); $this->last_query = $query;
|
$query = $this->db->query($string, PDO::FETCH_BOTH); $this->last_query = $query;
|
$query->guid = $this->queries;
| |
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, $resulttype=PDO::FETCH_BOTH)
| public function fetch_array($query, $resulttype=PDO::FETCH_BOTH)
|
{
|
{
|
if(!is_object($query)) { return; }
| |
switch($resulttype) { case PDO::FETCH_ASSOC:
| switch($resulttype) { case PDO::FETCH_ASSOC:
|
Zeile 100 | Zeile 101 |
---|
break; }
|
break; }
|
if($this->seek_array[$query->guid]) { $array = $query->fetch($resulttype, $this->seek[$query->guid]['offset'], $this->seek[$query->guid]['row']); }
| $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 { $array = $query->fetch($resulttype); }
|
else { $array = $query->fetch($resulttype); }
|
|
|
return $array;
|
return $array;
|
}
/**
| }
/**
|
* Moves internal row pointer to the next row
|
* 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);
| * * @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(); return count($result); } else
|
{ $query = $this->db->query($query->queryString); $result = $query->fetchAll(); return count($result); } else
|
{
| {
|
return $query->rowCount(); }
|
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); }
|
Zeile 167 | Zeile 162 |
---|
/** * 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; }
/** * 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"))
| */ public function error_number($query) { if(!method_exists($query, "errorCode"))
|
{
|
{
|
return $this->db->errorInfo();
| return 0;
|
}
|
}
|
return $query->errorInfo();
| return $query->errorCode();
|
}
/**
|
}
/**
|
* Roll back the last query.
| * Return an error string.
|
*
|
*
|
* @return boolean true on success, false otherwise.
| * @param PDOStatement $query The query resource. * @return array The error string of the current error.
|
*/
|
*/
|
function roll_back()
| public function error_string($query)
|
{
|
{
|
//return $this->db->rollBack();
| if(!method_exists($query, "errorInfo")) { return $this->db->errorInfo(); }
return $query->errorInfo();
|
}
/** * 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 220 | 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 242 | 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; }
|