Zeile 65 | Zeile 65 |
---|
* @var resource */ public $link;
|
* @var resource */ public $link;
|
| /** * @var array */ public $connections = array();
|
/** * Explanation of a query.
| /** * Explanation of a query.
|
Zeile 293 | Zeile 298 |
---|
/** * Execute a write query on the database
|
/** * Execute a write query on the database
|
*
| *
|
* @param string $query The query SQL. * @param boolean|int $hide_errors 1 if hide errors, 0 if not. * @return PDOStatement The query data.
| * @param string $query The query SQL. * @param boolean|int $hide_errors 1 if hide errors, 0 if not. * @return PDOStatement The query data.
|
Zeile 336 | Zeile 341 |
---|
return $array[$field]; } return null;
|
return $array[$field]; } return null;
|
}
| }
|
/** * Moves internal row pointer to the next row
| /** * Moves internal row pointer to the next row
|
Zeile 364 | Zeile 369 |
---|
$result = false; } }
|
$result = false; } }
|
|
|
return $result;
|
return $result;
|
}
| }
|
/** * Return the number of rows resulting from a query. *
| /** * Return the number of rows resulting from a query. *
|
Zeile 377 | Zeile 382 |
---|
function num_rows($query) { return $this->db->num_rows($query);
|
function num_rows($query) { return $this->db->num_rows($query);
|
}
| }
|
/** * Return the last id number of inserted data. *
| /** * Return the last id number of inserted data. *
|
Zeile 392 | Zeile 397 |
---|
/** * Close the connection with the DBMS.
|
/** * Close the connection with the DBMS.
|
*
| *
|
*/ function close() {
| */ function close() {
|
Zeile 406 | Zeile 411 |
---|
* @return int The error number of the current error. */ function error_number($query=null)
|
* @return int The error number of the current error. */ function error_number($query=null)
|
{
| {
|
if($query == null) { $query = $this->db->last_query;
| if($query == null) { $query = $this->db->last_query;
|
Zeile 477 | Zeile 482 |
---|
require_once MYBB_ROOT."inc/class_error.php"; $error_handler = new errorHandler(); }
|
require_once MYBB_ROOT."inc/class_error.php"; $error_handler = new errorHandler(); }
|
|
|
$error = array( "error_no" => $error_no, "error" => $error, "query" => $string ); $error_handler->error(MYBB_SQL, $error);
|
$error = array( "error_no" => $error_no, "error" => $error, "query" => $string ); $error_handler->error(MYBB_SQL, $error);
|
}
| }
|
else { trigger_error("<strong>[SQL] [{$error_no}] {$error}</strong><br />{$string}", E_USER_ERROR); }
|
else { trigger_error("<strong>[SQL] [{$error_no}] {$error}</strong><br />{$string}", E_USER_ERROR); }
|
} }
| } }
|
/** * Returns the number of affected rows in a query. *
| /** * Returns the number of affected rows in a query. *
|
Zeile 519 | Zeile 524 |
---|
if(!$query) { $query = $this->db->last_query;
|
if(!$query) { $query = $this->db->last_query;
|
}
| }
|
return $this->db->num_fields($query); }
| return $this->db->num_fields($query); }
|
Zeile 546 | Zeile 551 |
---|
while($table = $this->fetch_array($query)) { $tables[] = $table['tbl_name'];
|
while($table = $this->fetch_array($query)) { $tables[] = $table['tbl_name'];
|
} $query->closeCursor();
| } $query->closeCursor();
|
return $tables; }
| return $tables; }
|
Zeile 561 | Zeile 566 |
---|
{ $query = $this->query("SELECT COUNT(name) as count FROM sqlite_master WHERE type='table' AND name='{$this->table_prefix}{$table}'"); $exists = $this->fetch_field($query, "count");
|
{ $query = $this->query("SELECT COUNT(name) as count FROM sqlite_master WHERE type='table' AND name='{$this->table_prefix}{$table}'"); $exists = $this->fetch_field($query, "count");
|
$query->closeCursor();
| $query->closeCursor();
|
if($exists > 0)
|
if($exists > 0)
|
{
| {
|
return true;
|
return true;
|
}
| }
|
else { return false;
| else { return false;
|
Zeile 575 | Zeile 580 |
---|
/** * Check if a field exists in a database.
|
/** * Check if a field exists in a database.
|
*
| *
|
* @param string $field The field name. * @param string $table The table name. * @return boolean True when exists, false if not.
| * @param string $field The field name. * @param string $table The table name. * @return boolean True when exists, false if not.
|
Zeile 603 | Zeile 608 |
---|
else { return false;
|
else { return false;
|
}
| }
|
}
/**
| }
/**
|
Zeile 632 | Zeile 637 |
---|
* @param string $fields Comma delimetered list of fields to be selected. * @param string $conditions SQL formatted list of conditions to be matched. * @param array $options List of options: group by, order by, order direction, limit, limit start.
|
* @param string $fields Comma delimetered list of fields to be selected. * @param string $conditions SQL formatted list of conditions to be matched. * @param array $options List of options: group by, order by, order direction, limit, limit start.
|
* @return PDOStatement The query data. */
| * @return PDOStatement The query data. */
|
function simple_select($table, $fields="*", $conditions="", $options=array()) { $query = "SELECT ".$fields." FROM ".$this->table_prefix.$table;
| function simple_select($table, $fields="*", $conditions="", $options=array()) { $query = "SELECT ".$fields." FROM ".$this->table_prefix.$table;
|
Zeile 661 | Zeile 666 |
---|
if(isset($options['limit_start']) && isset($options['limit'])) { $query .= " LIMIT ".$options['limit_start'].", ".$options['limit'];
|
if(isset($options['limit_start']) && isset($options['limit'])) { $query .= " LIMIT ".$options['limit_start'].", ".$options['limit'];
|
} else if(isset($options['limit']))
| } else if(isset($options['limit']))
|
{ $query .= " LIMIT ".$options['limit']; }
|
{ $query .= " LIMIT ".$options['limit']; }
|
|
|
return $this->query($query); }
| return $this->query($query); }
|
Zeile 676 | Zeile 681 |
---|
* @param string $table The table name to perform the query on. * @param array $array An array of fields and their values. * @return int|bool The insert ID if available or false if an error is found
|
* @param string $table The table name to perform the query on. * @param array $array An array of fields and their values. * @return int|bool The insert ID if available or false if an error is found
|
*/
| */
|
function insert_query($table, $array) { global $mybb;
| function insert_query($table, $array) { global $mybb;
|
Zeile 746 | Zeile 751 |
---|
} $values[$field] = $value;
|
} $values[$field] = $value;
|
}
| }
|
else { $values[$field] = $this->quote_val($value);
| else { $values[$field] = $this->quote_val($value);
|
Zeile 761 | Zeile 766 |
---|
INTO {$this->table_prefix}{$table} ({$fields}) VALUES {$insert_rows} ");
|
INTO {$this->table_prefix}{$table} ({$fields}) VALUES {$insert_rows} ");
|
$query->closeCursor();
| $query->closeCursor();
|
}
/**
| }
/**
|
Zeile 775 | Zeile 780 |
---|
* @return PDOStatement The query data. */ function update_query($table, $array, $where="", $limit="", $no_quote=false)
|
* @return PDOStatement The query data. */ function update_query($table, $array, $where="", $limit="", $no_quote=false)
|
{
| {
|
global $mybb;
if(!is_array($array))
| global $mybb;
if(!is_array($array))
|
Zeile 831 | Zeile 836 |
---|
private function quote_val($value, $quote="'") { if(is_int($value))
|
private function quote_val($value, $quote="'") { if(is_int($value))
|
{
| {
|
$quoted = $value; } else
| $quoted = $value; } else
|
Zeile 859 | Zeile 864 |
---|
}
$query = $this->query("DELETE FROM {$this->table_prefix}$table $query");
|
}
$query = $this->query("DELETE FROM {$this->table_prefix}$table $query");
|
$query->closeCursor();
| $query->closeCursor();
|
return $query;
|
return $query;
|
}
| }
|
/** * Escape a string *
| /** * Escape a string *
|
Zeile 873 | Zeile 878 |
---|
{ $string = $this->db->escape_string($string); return $string;
|
{ $string = $this->db->escape_string($string); return $string;
|
}
| }
|
/** * Serves no purposes except compatibility *
| /** * Serves no purposes except compatibility *
|
Zeile 888 | Zeile 893 |
---|
/** * Escape a string used within a like command.
|
/** * Escape a string used within a like command.
|
*
| *
|
* @param string $string The string to be escaped. * @return string The escaped string. */
| * @param string $string The string to be escaped. * @return string The escaped string. */
|
Zeile 920 | Zeile 925 |
---|
*/ function optimize_table($table) {
|
*/ function optimize_table($table) {
|
$query = $this->query("VACUUM ".$this->table_prefix.$table.""); $query->closeCursor();
| // SQLite doesn't support table level optimization. // Using `VACUUM [main | $db_name]` may also be blocked by any opened query cursor, hence generating an error.
|
}
/**
| }
/**
|
Zeile 963 | Zeile 968 |
---|
*/ function show_fields_from($table) {
|
*/ function show_fields_from($table) {
|
$old_tbl_prefix = $this->table_prefix; $this->set_table_prefix(""); $query = $this->simple_select("sqlite_master", "sql", "type = 'table' AND name = '{$old_tbl_prefix}{$table}'"); $this->set_table_prefix($old_tbl_prefix); $table = trim(preg_replace('#CREATE\s+TABLE\s+"?'.$this->table_prefix.$table.'"?#i', '', $this->fetch_field($query, "sql"))); $query->closeCursor();
preg_match('#\((.*)\)#s', $table, $matches);
| $query = $this->write_query("PRAGMA TABLE_INFO('".$this->table_prefix.$table."')");
|
$field_info = array();
|
$field_info = array();
|
$table_cols = explode(',', trim($matches[1])); foreach($table_cols as $declaration)
| while($field = $this->fetch_array($query))
|
{
|
{
|
$entities = preg_split('#\s+#', trim($declaration)); $column_name = preg_replace('/"?([^"]+)"?/', '\1', $entities[0]);
| if(!empty($field['pk'])) { $field['_key'] = 'PRI'; $field['_extra'] = 'auto_increment'; } else { $field['_key'] = ''; $field['_extra'] = ''; }
// SQLite allows NULLs in most PRIMARY KEY columns due to a bug in early versions, even in an INTEGER PRIMARY KEY column, read https://sqlite.org/lang_createtable.html for details. We won't fix this for consistency among other database engines. $field['_nullable'] = $field['notnull'] ? 'NO' : 'YES';
|
|
|
$field_info[] = array('Extra' => $entities[1], 'Field' => $column_name);
| $field_info[] = array( 'Field' => $field['name'], 'Type' => $field['type'], 'Null' => $field['_nullable'], 'Key' => $field['_key'], 'Default' => $field['dflt_value'], 'Extra' => $field['_extra'], );
|
}
|
}
|
| $query->closeCursor();
|
return $field_info; }
| return $field_info; }
|
Zeile 1075 | Zeile 1089 |
---|
$table_prefix = $this->table_prefix; }
|
$table_prefix = $this->table_prefix; }
|
| $table_prefix_bak = $this->table_prefix; $this->table_prefix = '';
|
if($hard == false) {
|
if($hard == false) {
|
if($this->table_exists($table))
| if($this->table_exists($table_prefix.$table))
|
{ $query = $this->query('DROP TABLE '.$table_prefix.$table); }
| { $query = $this->query('DROP TABLE '.$table_prefix.$table); }
|
Zeile 1086 | Zeile 1102 |
---|
{ $query = $this->query('DROP TABLE '.$table_prefix.$table); }
|
{ $query = $this->query('DROP TABLE '.$table_prefix.$table); }
|
| $this->table_prefix = $table_prefix_bak;
|
if(isset($query)) {
| if(isset($query)) {
|