/** * Applica una condizione alla query su tabella estraendo solo la riga * corrispondente alla primary key indicata * @param Mixed $pkeys * @return Boolean|Rowset */ public function getByPrimaryKey($pkeys = array()) { if (is_array($pkeys)) { reset($this->_pkeys); $condition = array(); foreach ($pkeys as $value) { $column = current($this->_pkeys); next($this->_pkeys); $condition[] = array('column' => $column, 'value' => $value); } reset($this->_pkeys); $where = Database::getClauseClassInstanceFromConnectionName('where', $this->_connection_name); $where->setData($condition); } else { reset($this->_pkeys); $value = $pkeys; $column = current($this->_pkeys); $condition = array(array('column' => $column, 'value' => $value)); $where = Database::getClauseClassInstanceFromConnectionName('where', $this->_connection_name); $where->setData($condition); } $query = Database::getQueryClass(array('select', 'from', 'where' => $where), $this->_connection_name); $query->sendData('from', array($this->getTable())); return Database::query($query); }
/** * Esegue uno statement * @param String $name * @return Rowset */ public function run($name) { if ($this->getStatementByName($name)) { return Database::query($this->getStatementByName($name)); } }
/** * Esegue una procedura ed inserisce eventuali parametri di ritorno in $return_params * @param type $query * @param type $bind_params * @param type $return_params * @return boolean */ public function callProcedure($query, $bind_params = null, &$return_params = null) { $pdo = $this->getDbInstance(); $string = $query; $params = array(); if ($query instanceof Query) { $string = $query->toString(); $params = $query->getBindParams(); $stmt = $pdo->prepare($string); } else { if ($query instanceof \PDOStatement) { $stmt = $query; } else { $stmt = $pdo->prepare($query); } } if (!is_null($bind_params)) { $params = $bind_params; } try { $stmt->execute($params); if (is_null($return_params)) { return true; // procedure eseguita } // altrimenti se non è null vuol dire che è stato passato e quindi devo ricavarmi i valori // in mysql non è possibile usare la costante \PDO::PARAM_INPUT_OUTPUT in quanto genera errore // quindi faccio una select sulle variabili indicate in fase di chiamata $selectclassname = \smn\pheeca\kernel\Database::getClauseClassNameFromDriverName('select', 'mysql'); $select_class = new $selectclassname($return_params); $stmt = $pdo->prepare($select_class->toString()); $stmt->execute($return_params); $return_params = $stmt->fetchAll(\PDO::FETCH_ASSOC); return $return_params; } catch (\PDOException $ex) { echo 'Adapter in exception : ' . $ex->getMessage(); return false; } }
/** * Esegue la query */ public function exec() { return Database::query($this, null, $this->getConnectionName()); }