/** * Logs this statement * * Sometimes you will need to debug specific statements. This method will create a logentry with the SQL query, the arguments used * and try to combine it for easy copy+paste from log to your sql tool (for retry). * @return void */ public function LogDebug() { log_debug("SQL: " . $this->_sql_used . "\nARGS: ", $this->_arguments_used, "\nMerged: ", ResultSet::MergeSql($this->_ds, $this->_sql_used, $this->_arguments_used)); }
function __execute($injected_sql = false, $injected_arguments = array(), $ctor_args = null) { $sql = $injected_sql ? $injected_sql : $this->__toString(); if ($injected_arguments) { if (is_array($injected_arguments)) { $this->_values = $injected_arguments; } else { $this->_values = array($injected_arguments); } } $this->_statement = $this->_ds->Prepare($sql); foreach ($this->_values as $i => $v) { if (is_integer($v)) { $this->_statement->bindValue($i + 1, $v, PDO::PARAM_INT); } elseif ($v instanceof DateTime) { $this->_statement->bindValue($i + 1, $v->format("c")); } else { $this->_statement->bindValue($i + 1, $v); } } if (!$this->_statement->execute()) { WdfDbException::Raise($this->_statement->ErrorOutput(), "\nArguments:", $this->_values, "\nMerged:", ResultSet::MergeSql($this->_ds, $sql, $this->_values)); } $res = $this->_statement->fetchAll(PDO::FETCH_CLASS, get_class($this->_object), $ctor_args); return $res; }
/** * Executes an SQL statement. * * @param string $sql SQL statement * @param array $parameter Arguments * @return ResultSet The query result */ function ExecuteSql($sql, $parameter = array()) { if (!is_array($parameter)) { $parameter = array($parameter); } $stmt = $this->Prepare($sql); if (!$stmt->execute($parameter)) { WdfDbException::Raise("SQL Error: " . $stmt->ErrorOutput(), "\nArguments:", $parameter, "\nMerged:", ResultSet::MergeSql($this, $sql, $parameter)); } $this->_last_affected_rows_count = $stmt->Count(); return $stmt; }