if ($this->mysqli->connect_error) {
return false;
}
+ $this->query_start("--set_charset()", null, SQL_QUERY_AUX);
$this->mysqli->set_charset('utf8');
+ $this->query_end(true);
+
return true;
}
public function get_tables() {
$this->reads++;
$tables = array();
- if ($result = $this->mysqli->query("SHOW TABLES")) {
+ $sql = "SHOW TABLES";
+ $this->query_start($sql, null, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+ if ($result) {
while ($arr = $result->fetch_assoc()) {
$tablename = reset($arr);
if (strpos($tablename, $this->prefix) !== 0) {
public function get_indexes($table) {
$preflen = strlen($this->prefix);
$indexes = array();
- if ($result = $this->mysqli->query("SHOW INDEXES FROM {$this->prefix}$table")) {
+ $sql = "SHOW INDEXES FROM {$this->prefix}$table";
+ $this->query_start($sql, null, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+ if ($result) {
while ($res = $result->fetch_object()) {
if ($res->Key_name === 'PRIMARY') {
continue;
$this->columns[$table] = array();
- if (!$rawcolumns = $this->get_records_sql("SHOW COLUMNS FROM {".$table."}")) {
+ $sql = "SHOW COLUMNS FROM {$this->prefix}$table";
+ $this->query_start($sql, null, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
+ if ($result === false) {
return array();
}
- foreach ($rawcolumns as $rawcolumn) {
+ while ($rawcolumn = $result->fetch_assoc()) {
+ $rawcolumn = (object)array_change_key_case($rawcolumn, CASE_LOWER);
+
$info = new object();
$info->name = $rawcolumn->field;
$matches = null;
$this->columns[$table][$info->name] = new database_column_info($info);
}
+ $result->close();
+
return $this->columns[$table];
}
* @return bool
*/
public function setup_is_unicodedb() {
- $this->reads++;
- if ($result = $this->mysqli->query("SHOW LOCAL VARIABLES LIKE 'character_set_database'")) {
+ $sql = "SHOW LOCAL VARIABLES LIKE 'character_set_database'";
+ $this->query_start($sql, null, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
+ if ($result) {
$result->close();
return true;
}
* @return bool success
*/
public function change_database_structure($sql) {
- $this->writes++;
- $this->print_debug($sql);
- $result = $this->mysqli->query($sql);
$this->reset_columns();
+
+ $this->query_start($sql, null, SQL_QUERY_STRUCTURE);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
if ($result === false) {
$this->report_error($sql);
return false;
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->writes++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->reads++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_SELECT);
// no MYSQLI_USE_RESULT here, it would block write ops on affected tables
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->reads++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_SELECT);
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
}
$return = array();
-
+
while($row = $result->fetch_assoc()) {
$row = array_change_key_case($row, CASE_LOWER);
$id = reset($row);
$return[$id] = (object)$row;
}
$result->close();
-
+
return $return;
}
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->reads++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_SELECT);
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
}
$return = array();
-
+
while($row = $result->fetch_assoc()) {
$return[] = reset($row);
}
$result->close();
-
+
return $return;
}
$sql = "INSERT INTO {$this->prefix}$table ($fields) VALUES($qms)";
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->writes++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_INSERT);
$result = $this->mysqli->query($rawsql);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
$sql = "UPDATE {$this->prefix}$table SET $sets WHERE id=?";
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->writes++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
$sql = "UPDATE {$this->prefix}$table SET $newfield $select";
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->writes++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
- $this->writes++;
- $this->print_debug($sql, $params);
+ $this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
+ $this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
* this is _very_ useful for massive updates
*/
public function begin_sql() {
- $result = $result = $this->mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED");
+ $sql = "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED";
+ $this->query_start($sql, NULL, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
if ($result === false) {
return false;
}
- $result = $result = $this->mysqli->query("BEGIN");
+
+ $sql = "BEGIN";
+ $this->query_start($sql, NULL, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
if ($result === false) {
return false;
}
* on DBs that support it, commit the transaction
*/
public function commit_sql() {
- $result = $result = $this->mysqli->query("COMMIT");
+ $sql = "COMMIT";
+ $this->query_start($sql, NULL, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
if ($result === false) {
return false;
}
* on DBs that support it, rollback the transaction
*/
public function rollback_sql() {
- $result = $result = $this->mysqli->query("ROLLBACK");
+ $sql = "ROLLBACK";
+ $this->query_start($sql, NULL, SQL_QUERY_AUX);
+ $result = $this->mysqli->query($sql);
+ $this->query_end($result);
+
if ($result === false) {
return false;
}