Zeile 30 | Zeile 30 |
---|
* @var string */ public $type;
|
* @var string */ public $type;
|
| /** * PDOStatement objects of performed queries. * * @var array */ public $query_objects = array();
|
/** * A count of the number of queries.
| /** * A count of the number of queries.
|
Zeile 75 | Zeile 82 |
---|
/** * The current table type in use (myisam/innodb)
|
/** * The current table type in use (myisam/innodb)
|
*
| *
|
* @var string */ public $table_type = "myisam";
| * @var string */ public $table_type = "myisam";
|
Zeile 119 | Zeile 126 |
---|
* Our pdo implementation * * @var dbpdoEngine
|
* Our pdo implementation * * @var dbpdoEngine
|
*/
| */
|
var $db;
/**
| var $db;
/**
|
Zeile 133 | Zeile 140 |
---|
get_execution_time();
require_once MYBB_ROOT."inc/db_pdo.php";
|
get_execution_time();
require_once MYBB_ROOT."inc/db_pdo.php";
|
|
|
$this->db = new dbpdoEngine("sqlite:{$config['database']}");
$query_time = get_execution_time();
| $this->db = new dbpdoEngine("sqlite:{$config['database']}");
$query_time = get_execution_time();
|
Zeile 141 | Zeile 148 |
---|
$this->query_time += $query_time;
$this->connections[] = "[WRITE] {$config['database']} (Connected in ".format_time_duration($query_time).")";
|
$this->query_time += $query_time;
$this->connections[] = "[WRITE] {$config['database']} (Connected in ".format_time_duration($query_time).")";
|
|
|
if($this->db) { $this->query('PRAGMA short_column_names = 1');
| if($this->db) { $this->query('PRAGMA short_column_names = 1');
|
Zeile 185 | Zeile 192 |
---|
{ $query = $this->db->query($string); $query->closeCursor();
|
{ $query = $this->db->query($string); $query->closeCursor();
|
}
| }
|
else { $query = $this->alter_table_parse($tablename, $alterdefs, $string);
| else { $query = $this->alter_table_parse($tablename, $alterdefs, $string);
|
Zeile 206 | Zeile 213 |
---|
);
$this->error($error['message'], $error['code']);
|
);
$this->error($error['message'], $error['code']);
|
}
| }
|
}
|
}
|
| $this->query_objects[] = $query;
|
if($this->error_number($query) > 0 && !$hide_errors) {
| if($this->error_number($query) > 0 && !$hide_errors) {
|
Zeile 220 | Zeile 229 |
---|
$this->query_count++;
if($mybb->debug_mode)
|
$this->query_count++;
if($mybb->debug_mode)
|
{
| {
|
$this->explain_query($string, $query_time); }
| $this->explain_query($string, $query_time); }
|
Zeile 228 | Zeile 237 |
---|
{ $query->closeCursor(); return null;
|
{ $query->closeCursor(); return null;
|
}
| }
|
return $query; }
| return $query; }
|
Zeile 246 | Zeile 255 |
---|
$this->explain .= "<table style=\"background-color: #666;\" width=\"95%\" cellpadding=\"4\" cellspacing=\"1\" align=\"center\">\n". "<tr>\n". "<td colspan=\"8\" style=\"background-color: #ccc;\"><strong>#".$this->query_count." - Select Query</strong></td>\n".
|
$this->explain .= "<table style=\"background-color: #666;\" width=\"95%\" cellpadding=\"4\" cellspacing=\"1\" align=\"center\">\n". "<tr>\n". "<td colspan=\"8\" style=\"background-color: #ccc;\"><strong>#".$this->query_count." - Select Query</strong></td>\n".
|
"</tr>\n". "<tr>\n". "<td colspan=\"8\" style=\"background-color: #fefefe;\"><span style=\"font-family: Courier; font-size: 14px;\">".htmlspecialchars_uni($string)."</span></td>\n". "</tr>\n". "<tr>\n".
| "</tr>\n". "<tr>\n". "<td colspan=\"8\" style=\"background-color: #fefefe;\"><span style=\"font-family: Courier; font-size: 14px;\">".htmlspecialchars_uni($string)."</span></td>\n". "</tr>\n". "<tr>\n".
|
"<td colspan=\"8\" style=\"background-color: #fff;\">Query Time: ".format_time_duration($qtime)."</td>\n". "</tr>\n". "</table>\n".
| "<td colspan=\"8\" style=\"background-color: #fff;\">Query Time: ".format_time_duration($qtime)."</td>\n". "</tr>\n". "</table>\n".
|
Zeile 294 | Zeile 303 |
---|
* @param PDOStatement $query The result data. * @param int $resulttype One of PDO's constants: FETCH_ASSOC, FETCH_BOUND, FETCH_CLASS, FETCH_INTO, FETCH_LAZY, FETCH_NAMED, FETCH_NUM, FETCH_OBJ or FETCH_BOTH * @return array The array of results.
|
* @param PDOStatement $query The result data. * @param int $resulttype One of PDO's constants: FETCH_ASSOC, FETCH_BOUND, FETCH_CLASS, FETCH_INTO, FETCH_LAZY, FETCH_NAMED, FETCH_NUM, FETCH_OBJ or FETCH_BOTH * @return array The array of results.
|
*/
| */
|
function fetch_array($query, $resulttype=PDO::FETCH_BOTH) { $array = $this->db->fetch_array($query, $resulttype);
| function fetch_array($query, $resulttype=PDO::FETCH_BOTH) { $array = $this->db->fetch_array($query, $resulttype);
|
Zeile 328 | Zeile 337 |
---|
function data_seek($query, $row) { $this->db->seek($query, $row);
|
function data_seek($query, $row) { $this->db->seek($query, $row);
|
| }
/** * Closes cursors of registered queries. * */ function close_cursors() { $result = true;
foreach($this->query_objects as $query) { if(!$query->closeCursor()) { $result = false; } }
return $result;
|
}
/**
| }
/**
|
Zeile 359 | Zeile 387 |
---|
function close() { return;
|
function close() { return;
|
}
| }
|
/** * Return an error number. *
| /** * Return an error number. *
|
Zeile 381 | Zeile 409 |
---|
/** * Return an error string.
|
/** * Return an error string.
|
*
| *
|
* @param PDOStatement $query * @return string The explanation for the current error. */
| * @param PDOStatement $query * @return string The explanation for the current error. */
|
Zeile 393 | Zeile 421 |
---|
{ $query = $this->db->last_query; }
|
{ $query = $this->db->last_query; }
|
|
|
$error_string = $this->db->error_string($query); $this->error_number = "";
|
$error_string = $this->db->error_string($query); $this->error_number = "";
|
|
|
return $error_string; }
return '';
|
return $error_string; }
return '';
|
}
| }
|
/** * Output a database error. *
| /** * Output a database error. *
|
Zeile 416 | Zeile 444 |
---|
if($this->error_reporting) { if($query == null)
|
if($this->error_reporting) { if($query == null)
|
{
| {
|
$query = $this->db->last_query; }
if($error_no == 0) { $error_no = $this->error_number($query);
|
$query = $this->db->last_query; }
if($error_no == 0) { $error_no = $this->error_number($query);
|
}
| }
|
if($error == "") {
| if($error == "") {
|
Zeile 463 | Zeile 491 |
---|
function affected_rows($query=null) { if($query == null)
|
function affected_rows($query=null) { if($query == null)
|
{ $query = $this->db->last_query; }
return $this->db->affected_rows($query); }
| { $query = $this->db->last_query; }
return $this->db->affected_rows($query); }
|
/** * Return the number of fields.
| /** * Return the number of fields.
|
Zeile 488 | Zeile 516 |
---|
/** * Lists all tables in the database.
|
/** * Lists all tables in the database.
|
*
| *
|
* @param string $database The database name. * @param string $prefix Prefix of the table (optional) * @return array The table list.
| * @param string $database The database name. * @param string $prefix Prefix of the table (optional) * @return array The table list.
|
Zeile 500 | Zeile 528 |
---|
$query = $this->query("SELECT tbl_name FROM sqlite_master WHERE type = 'table' AND tbl_name LIKE '".$this->escape_string($prefix)."%'"); } else
|
$query = $this->query("SELECT tbl_name FROM sqlite_master WHERE type = 'table' AND tbl_name LIKE '".$this->escape_string($prefix)."%'"); } else
|
{
| {
|
$query = $this->query("SELECT tbl_name FROM sqlite_master WHERE type = 'table'");
|
$query = $this->query("SELECT tbl_name FROM sqlite_master WHERE type = 'table'");
|
}
| }
|
$tables = array(); while($table = $this->fetch_array($query)) { $tables[] = $table['tbl_name'];
|
$tables = array(); while($table = $this->fetch_array($query)) { $tables[] = $table['tbl_name'];
|
} $query->closeCursor();
| } $query->closeCursor();
|
return $tables; }
|
return $tables; }
|
|
|
/** * Check if a table exists in a database. *
| /** * Check if a table exists in a database. *
|
Zeile 526 | Zeile 554 |
---|
$query->closeCursor();
if($exists > 0)
|
$query->closeCursor();
if($exists > 0)
|
{
| {
|
return true; } else {
|
return true; } else {
|
return false;
| return false;
|
} }
|
} }
|
|
|
/** * Check if a field exists in a database. *
| /** * Check if a field exists in a database. *
|
Zeile 545 | Zeile 573 |
---|
function field_exists($field, $table) { $query = $this->query("PRAGMA table_info('{$this->table_prefix}{$table}')");
|
function field_exists($field, $table) { $query = $this->query("PRAGMA table_info('{$this->table_prefix}{$table}')");
|
|
|
$exists = 0;
|
$exists = 0;
|
|
|
while($row = $this->fetch_array($query)) { if($row['name'] == $field) { ++$exists;
|
while($row = $this->fetch_array($query)) { if($row['name'] == $field) { ++$exists;
|
} }
$query->closeCursor();
| } }
$query->closeCursor();
|
if($exists > 0) {
| if($exists > 0) {
|
Zeile 904 | Zeile 932 |
---|
* @return string The SQLite command to create the specified table. */ function show_create_table($table)
|
* @return string The SQLite command to create the specified table. */ function show_create_table($table)
|
{ $old_tbl_prefix = $this->table_prefix;
| { $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}' ORDER BY type DESC, name"); $this->set_table_prefix($old_tbl_prefix);
| $this->set_table_prefix(""); $query = $this->simple_select("sqlite_master", "sql", "type = 'table' AND name = '{$old_tbl_prefix}{$table}' ORDER BY type DESC, name"); $this->set_table_prefix($old_tbl_prefix);
|
Zeile 1084 | Zeile 1112 |
---|
* * @param string $table The table * @param array $replacements The replacements
|
* * @param string $table The table * @param array $replacements The replacements
|
* @param mixed $default_field The default field(s)
| * @param string|array $default_field The default field(s) * @param boolean $insert_id Whether or not to return an insert id. True by default
|
* @return int|PDOStatement|bool Returns either the insert id (if a new row is inserted), the query resource (if a row is updated) or false on failure */
|
* @return int|PDOStatement|bool Returns either the insert id (if a new row is inserted), the query resource (if a row is updated) or false on failure */
|
function replace_query($table, $replacements=array(), $default_field="")
| function replace_query($table, $replacements=array(), $default_field="", $insert_id=true)
|
{ global $mybb;
| { global $mybb;
|
Zeile 1257 | Zeile 1286 |
---|
{ $defparts = preg_split("/[\s]+/", $def, -1, PREG_SPLIT_NO_EMPTY); $action = strtolower($defparts[0]);
|
{ $defparts = preg_split("/[\s]+/", $def, -1, PREG_SPLIT_NO_EMPTY); $action = strtolower($defparts[0]);
|
|
|
switch($action) { case 'change':
| switch($action) { case 'change':
|
Zeile 1300 | Zeile 1329 |
---|
} break; case 'drop':
|
} break; case 'drop':
|
if(sizeof($defparts) < 2) {
| if(sizeof($defparts) < 2) {
|
$this->error($fullquery, 'near "'.$defparts[0].($defparts[1] ? ' '.$defparts[1] : '').'": syntax error'); return false; }
| $this->error($fullquery, 'near "'.$defparts[0].($defparts[1] ? ' '.$defparts[1] : '').'": syntax error'); return false; }
|
Zeile 1344 | Zeile 1373 |
---|
if($query === false) { return false;
|
if($query === false) { return false;
|
}
| }
|
$query->closeCursor(); // End block
| $query->closeCursor(); // End block
|
Zeile 1386 | Zeile 1415 |
---|
/** * Drops a column
|
/** * Drops a column
|
* * @param string $table The table * @param string $column The column name
| * * @param string $table The table * @param string $column The column name
|
* @return PDOStatement */ function drop_column($table, $column)
| * @return PDOStatement */ function drop_column($table, $column)
|
Zeile 1409 | Zeile 1438 |
---|
$query = $this->write_query("ALTER TABLE {$this->table_prefix}{$table} ADD {$column} {$definition}"); $query->closeCursor(); return $query;
|
$query = $this->write_query("ALTER TABLE {$this->table_prefix}{$table} ADD {$column} {$definition}"); $query->closeCursor(); return $query;
|
}
| }
|
/** * Modifies a column
|
/** * Modifies a column
|
*
| *
|
* @param string $table The table * @param string $column The column name
|
* @param string $table The table * @param string $column The column name
|
* @param string $new_definition the new column definition */ function modify_column($table, $column, $new_definition) {
| * @param string $new_definition the new column definition * @param boolean|string $new_not_null Whether to "drop" or "set" the NOT NULL attribute (no change if false) * @param boolean|string $new_default_value The new default value, or false to drop the attribute * @return bool Returns true if all queries are executed successfully or false if one of them failed */ function modify_column($table, $column, $new_definition, $new_not_null=false, $new_default_value=false) {
|
// We use a rename query as both need to duplicate the table etc...
|
// We use a rename query as both need to duplicate the table etc...
|
$this->rename_column($table, $column, $column, $new_definition);
| return $this->rename_column($table, $column, $column, $new_definition, $new_not_null, $new_default_value);
|
}
|
}
|
|
|
/** * Renames a column *
| /** * Renames a column *
|
Zeile 1431 | Zeile 1463 |
---|
* @param string $old_column The old column name * @param string $new_column the new column name * @param string $new_definition the new column definition
|
* @param string $old_column The old column name * @param string $new_column the new column name * @param string $new_definition the new column definition
|
* @return PDOStatement
| * @param boolean|string $new_not_null Whether to "drop" or "set" the NOT NULL attribute (no change if false) * @param boolean|string $new_default_value The new default value, or false to drop the attribute * @return bool Returns true if all queries are executed successfully
|
*/
|
*/
|
function rename_column($table, $old_column, $new_column, $new_definition)
| function rename_column($table, $old_column, $new_column, $new_definition, $new_not_null=false, $new_default_value=false)
|
{
|
{
|
| if($new_not_null !== false) { if(strtolower($new_not_null) == "set") { $not_null = "NOT NULL"; } else { $not_null = "NULL"; } } else { $not_null = ''; }
if($new_default_value !== false) { $default = "DEFAULT ".$new_default_value; } else { $default = ''; }
|
// This will trigger the "alter_table_parse" function which will copy the table and rename the column
|
// This will trigger the "alter_table_parse" function which will copy the table and rename the column
|
return $this->write_query("ALTER TABLE {$this->table_prefix}{$table} CHANGE {$old_column} {$new_column} {$new_definition}");
| return (bool) $this->write_query("ALTER TABLE {$this->table_prefix}{$table} CHANGE {$old_column} {$new_column} {$new_definition} {$not_null} {$default}");
|
}
/**
| }
/**
|