public static function getDbUtil() { $db_type = Phactory::getConnection()->getAttribute(PDO::ATTR_DRIVER_NAME); switch ($db_type) { case 'mysql': return new Phactory_DbUtil_MysqlUtil(); break; case 'sqlite': return new Phactory_DbUtil_SqliteUtil(); break; default: throw new Exception("DB type '{$db_type}' not found"); break; } }
public static function getDbUtil(Phactory $phactory) { $db_type = $phactory->getConnection()->getAttribute(\PDO::ATTR_DRIVER_NAME); switch ($db_type) { case 'mysql': return new DbUtil\MysqlUtil($phactory); break; case 'pgsql': return new DbUtil\PgsqlUtil($phactory); break; case 'sqlite': return new DbUtil\SqliteUtil($phactory); break; default: throw new \Exception("DB type '{$db_type}' not found"); break; } }
public function save() { $pdo = Phactory::getConnection(); $sql = "INSERT INTO {$this->_table} ("; $data = array(); $params = array(); foreach ($this->_storage as $key => $value) { $data["`{$key}`"] = ":{$key}"; $params[":{$key}"] = $value; } $keys = array_keys($data); $values = array_values($data); $sql .= join(',', $keys); $sql .= ") VALUES ("; $sql .= join(',', $values); $sql .= ")"; $stmt = $pdo->prepare($sql); $r = $stmt->execute($params); if ($r === false) { $error = $stmt->errorInfo(); Phactory_Logger::error('SQL statement failed: ' . $sql . ' ERROR MESSAGE: ' . $error[2] . ' ERROR CODE: ' . $error[1]); } // only works if table's primary key autoincrements $id = $pdo->lastInsertId(); if ($pk = $this->_table->getPrimaryKey()) { if ($id) { $this->_storage[$pk] = $id; } else { // if key doesn't autoincrement, find last inserted row and set the primary key. $sql = "SELECT * FROM {$this->_table} WHERE"; for ($i = 0, $size = sizeof($keys); $i < $size; ++$i) { $sql .= " {$keys[$i]} = {$values[$i]} AND"; } $sql = substr($sql, 0, -4); $stmt = $pdo->prepare($sql); $stmt->execute($params); $result = $stmt->fetch(PDO::FETCH_ASSOC); $this->_storage[$pk] = $result[$pk]; } } return $r; }
public function __construct() { $this->_pdo = Phactory::getConnection(); }
protected function _associateManyToMany($row, $many_to_many) { $pdo = Phactory::getConnection(); foreach ($many_to_many as $name => $arr) { list($to_rows, $assoc) = $arr; foreach ($to_rows as $to_row) { $join_table = $assoc->getJoinTable(); $from_join_column = $assoc->getFromJoinColumn(); $to_join_column = $assoc->getToJoinColumn(); $sql = "INSERT INTO `{$join_table}` \n (`{$from_join_column}`, `{$to_join_column}`)\n VALUES\n (:from_id, :to_id)"; $stmt = $pdo->prepare($sql); $r = $stmt->execute(array(':from_id' => $row->getId(), ':to_id' => $to_row->getId())); if ($r === false) { $error = $stmt->errorInfo(); Phactory_Logger::error('SQL statement failed: ' . $sql . ' ERROR MESSAGE: ' . $error[2] . ' ERROR CODE: ' . $error[1]); } } } }
public function testGetConnection() { $pdo = Phactory::getConnection(); $this->assertInstanceOf('PDO', $pdo); }