Zeile 141 | Zeile 141 |
---|
require_once MYBB_ROOT."inc/db_pdo.php";
|
require_once MYBB_ROOT."inc/db_pdo.php";
|
$this->db = new dbpdoEngine("sqlite:{$config['database']}");
| try { $this->db = new dbpdoEngine("sqlite:{$config['database']}"); } catch (Exception $ex) { $this->error("[READ] Unable to open the SQLite database");
return false; }
|
$query_time = get_execution_time();
| $query_time = get_execution_time();
|
Zeile 325 | Zeile 331 |
---|
$this->data_seek($query, $row); } $array = $this->fetch_array($query);
|
$this->data_seek($query, $row); } $array = $this->fetch_array($query);
|
return $array[$field];
| if($array !== null && $array !== false) { return $array[$field]; } return null;
|
}
/**
| }
/**
|
Zeile 636 | Zeile 646 |
---|
if(isset($options['group_by'])) { $query .= " GROUP BY ".$options['group_by'];
|
if(isset($options['group_by'])) { $query .= " GROUP BY ".$options['group_by'];
|
}
| }
|
if(isset($options['order_by'])) { $query .= " ORDER BY ".$options['order_by'];
| if(isset($options['order_by'])) { $query .= " ORDER BY ".$options['order_by'];
|
Zeile 651 | Zeile 661 |
---|
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'])) { $query .= " LIMIT ".$options['limit']; }
return $this->query($query);
|
else if(isset($options['limit'])) { $query .= " LIMIT ".$options['limit']; }
return $this->query($query);
|
}
| }
|
/** * Build an insert query from an array. *
| /** * Build an insert query from an array. *
|
Zeile 668 | Zeile 678 |
---|
* @return int|bool The insert ID if available or false if an error is found */ function insert_query($table, $array)
|
* @return int|bool The insert ID if available or false if an error is found */ function insert_query($table, $array)
|
{ global $mybb;
if(!is_array($array)) { return false; }
foreach($array as $field => $value) { if(isset($mybb->binary_fields[$table][$field]) && $mybb->binary_fields[$table][$field])
| { global $mybb;
if(!is_array($array)) { return false; }
foreach($array as $field => $value) { if(isset($mybb->binary_fields[$table][$field]) && $mybb->binary_fields[$table][$field])
|
{ if($value[0] != 'X') // Not escaped? {
| { if($value[0] != 'X') // Not escaped? {
|
Zeile 686 | Zeile 696 |
---|
} $array[$field] = $value;
|
} $array[$field] = $value;
|
}
| }
|
else { $array[$field] = $this->quote_val($value);
| else { $array[$field] = $this->quote_val($value);
|
Zeile 699 | Zeile 709 |
---|
INSERT INTO {$this->table_prefix}{$table} (".$fields.") VALUES (".$values.")
|
INSERT INTO {$this->table_prefix}{$table} (".$fields.") VALUES (".$values.")
|
");
| ");
|
$query->closeCursor(); return $this->insert_id(); }
| $query->closeCursor(); return $this->insert_id(); }
|
Zeile 740 | Zeile 750 |
---|
else { $values[$field] = $this->quote_val($value);
|
else { $values[$field] = $this->quote_val($value);
|
}
| }
|
} $insert_rows[] = "(".implode(",", $values).")"; }
| } $insert_rows[] = "(".implode(",", $values).")"; }
|
Zeile 781 | Zeile 791 |
---|
{ $quote = ""; }
|
{ $quote = ""; }
|
|
|
foreach($array as $field => $value) { if(isset($mybb->binary_fields[$table][$field]) && $mybb->binary_fields[$table][$field])
|
foreach($array as $field => $value) { if(isset($mybb->binary_fields[$table][$field]) && $mybb->binary_fields[$table][$field])
|
{
| {
|
if($value[0] != 'X') // Not escaped? { $value = $this->escape_binary($value); } $query .= $comma.$field."=".$value;
|
if($value[0] != 'X') // Not escaped? { $value = $this->escape_binary($value); } $query .= $comma.$field."=".$value;
|
}
| }
|
else { $quoted_value = $this->quote_val($value, $quote);
| else { $quoted_value = $this->quote_val($value, $quote);
|
Zeile 800 | Zeile 810 |
---|
$query .= $comma.$field."={$quoted_value}"; } $comma = ', ';
|
$query .= $comma.$field."={$quoted_value}"; } $comma = ', ';
|
}
| }
|
if(!empty($where)) { $query .= " WHERE $where";
| if(!empty($where)) { $query .= " WHERE $where";
|
Zeile 884 | Zeile 894 |
---|
*/ function escape_string_like($string) {
|
*/ function escape_string_like($string) {
|
return $this->escape_string(str_replace(array('%', '_') , array('\\%' , '\\_') , $string));
| return $this->escape_string(str_replace(array('\\', '%', '_') , array('\\\\', '\\%' , '\\_') , $string));
|
}
/**
| }
/**
|
Zeile 1131 | Zeile 1141 |
---|
if($value[0] != 'X') // Not escaped? { $value = $this->escape_binary($value);
|
if($value[0] != 'X') // Not escaped? { $value = $this->escape_binary($value);
|
}
| }
|
$values .= $comma.$value; }
| $values .= $comma.$value; }
|
Zeile 1170 | Zeile 1180 |
---|
if($this->fetch_field($query, "count") == 1) { $update = true;
|
if($this->fetch_field($query, "count") == 1) { $update = true;
|
} }
| } }
|
else { $query = $this->write_query("SELECT {$default_field} FROM {$this->table_prefix}{$table}");
| else { $query = $this->write_query("SELECT {$default_field} FROM {$this->table_prefix}{$table}");
|
Zeile 1293 | Zeile 1303 |
---|
if(sizeof($defparts) <= 3) { $this->error($alterdefs, 'near "'.$defparts[0].($defparts[1] ? ' '.$defparts[1] : '').($defparts[2] ? ' '.$defparts[2] : '').'": syntax error', E_USER_WARNING);
|
if(sizeof($defparts) <= 3) { $this->error($alterdefs, 'near "'.$defparts[0].($defparts[1] ? ' '.$defparts[1] : '').($defparts[2] ? ' '.$defparts[2] : '').'": syntax error', E_USER_WARNING);
|
return false; }
if($severpos = strpos($createtesttableSQL, ' '.$defparts[1].' '))
| return false; }
if($severpos = strpos($createtesttableSQL, ' '.$defparts[1].' '))
|
{ if($newcols[$defparts[1]] != $defparts[1])
|
{ if($newcols[$defparts[1]] != $defparts[1])
|
{
| {
|
$this->error($alterdefs, 'unknown column "'.$defparts[1].'" in "'.$table.'"'); return false;
|
$this->error($alterdefs, 'unknown column "'.$defparts[1].'" in "'.$table.'"'); return false;
|
}
| }
|
$newcols[$defparts[1]] = $defparts[2]; $nextcommapos = strpos($createtesttableSQL, ',', $severpos); $insertval = '';
|
$newcols[$defparts[1]] = $defparts[2]; $nextcommapos = strpos($createtesttableSQL, ',', $severpos); $insertval = '';
|
|
|
for($i = 2; $i < sizeof($defparts); $i++) { $insertval .= ' '.$defparts[$i];
| for($i = 2; $i < sizeof($defparts); $i++) { $insertval .= ' '.$defparts[$i];
|
Zeile 1316 | Zeile 1326 |
---|
if($nextcommapos) { $createtesttableSQL = substr($createtesttableSQL, 0, $severpos).$insertval.substr($createtesttableSQL, $nextcommapos);
|
if($nextcommapos) { $createtesttableSQL = substr($createtesttableSQL, 0, $severpos).$insertval.substr($createtesttableSQL, $nextcommapos);
|
} else
| } else
|
{ $createtesttableSQL = substr($createtesttableSQL, 0, $severpos-(strpos($createtesttableSQL, ',') ? 0 : 1)).$insertval.')'; }
| { $createtesttableSQL = substr($createtesttableSQL, 0, $severpos-(strpos($createtesttableSQL, ',') ? 0 : 1)).$insertval.')'; }
|
Zeile 1325 | Zeile 1335 |
---|
else { $this->error($fullquery, 'unknown column "'.$defparts[1].'" in "'.$table.'"', E_USER_WARNING);
|
else { $this->error($fullquery, 'unknown column "'.$defparts[1].'" in "'.$table.'"', E_USER_WARNING);
|
return false;
| return false;
|
} break; case 'drop':
| } break; case 'drop':
|
Zeile 1336 | Zeile 1346 |
---|
}
if($severpos = strpos($createtesttableSQL, ' '.$defparts[1].' '))
|
}
if($severpos = strpos($createtesttableSQL, ' '.$defparts[1].' '))
|
{ $nextcommapos = strpos($createtesttableSQL, ',', $severpos);
| { $nextcommapos = strpos($createtesttableSQL, ',', $severpos);
|
if($nextcommapos) {
| if($nextcommapos) {
|
Zeile 1415 | Zeile 1425 |
---|
/** * Drops a column
|
/** * Drops a column
|
* * @param string $table The table * @param string $column The column name * @return PDOStatement */
| * * @param string $table The table * @param string $column The column name * @return PDOStatement */
|
function drop_column($table, $column) { return $this->write_query("ALTER TABLE {$this->table_prefix}{$table} DROP {$column}");
| function drop_column($table, $column) { return $this->write_query("ALTER TABLE {$this->table_prefix}{$table} DROP {$column}");
|
Zeile 1438 | Zeile 1448 |
---|
$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 $table The table
|
* @param string $column The column name
|
* @param string $column The column name
|
* @param string $new_definition the new column 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)
| 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 1460 | Zeile 1473 |
---|
* @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}");
|
}
/**
| }
/**
|