$database

All database operations in ProcessWire are performed via this PDO-style database class.

ProcessWire creates the database connection automatically at boot and this is available from the $database API variable. If you want to create a new connection on your own, choose either option A or B below:

// The following are required to construct a WireDatabasePDO
$dsn = 'mysql:dbname=mydb;host=myhost;port=3306';
$username = 'username';
$password = 'password';
$driver_options = []; // optional

// Construct option A
$db = new WireDatabasePDO($dsn, $username, $password, $driver_options);

// Construct option B
$db = new WireDatabasePDO([
  'dsn' => $dsn,
  'user' => $username,
  'pass' => $password,
  'options' => $driver_options, // optional
  'reader' => [ // optional
    'dsn' => '…',
    …
  ],
  …
]);

Click any linked item for full usage details and examples. Hookable methods are indicated with the icon. In addition to those shown below, the WireDatabasePDO class also inherits all the methods and properties of: Wire.

Show $var?     Show args?       Only hookable?    

Queries

Schema

NameReturnSummary 
$database->columnExists(string $table)
bool array

Does the given column exist in given table?

 
$database->getCharset()
string

Get current database charset (lowercase)

 
$database->getColumns(string $table)
array

Get all columns from given table

 
$database->getEngine()
string

Get current database engine (lowercase)

 
$database->getIndexes(string $table)
array

Get all indexes from given table

 
$database->getMaxIndexLength()
int

Get max length allowed for a fully indexed varchar column in ProcessWire

 
$database->getPrimaryKey(string $table)
string array

Get column(s) or info for given table’s primary key/index

 
$database->getTables()
array

Get array of all tables in this database.

 
$database->indexExists(string $table, string $indexName)
bool array

Does table have an index with given name?

 
$database->renameColumn(string $table, string $oldName, string $newName)
bool

Rename a table column without changing type

 
$database->renameColumns(string $table, array $columns)
int

Rename table columns without changing type

 
$database->tableExists(string $table)
bool

Does the given table exist in this database?

 

Connection

NameReturnSummary 
$database->closeConnection()
None

Close the PDO connection

 
$database->errorCode()
string

Fetch the SQLSTATE associated with the last operation on the statement handle

 
$database->errorInfo()
array

Fetch extended error information associated with the last operation on the database handle

 
$database->getAttribute(int $attribute)
mixed

Retrieve a database connection attribute

 
$database->reset()
self

Reset the current PDO connection(s)

 
$database->setAttribute(int $attribute, mixed $value)
bool

Sets an attribute on the database handle

 

Custom

NameReturnSummary 
$database->backups()
WireDatabaseBackup

Retrieve new instance of WireDatabaseBackups ready to use with this connection

 
$database->queryLog()
array bool

Log a query, start/stop query logging, or return logged queries

 
$database->sqlMode()
string bool

Get SQL mode, set SQL mode, add to existing SQL mode, or remove from existing SQL mode

 

Additional methods and properties

In addition to the methods and properties above, WireDatabasePDO also inherits the methods and properties of these classes:

API reference based on ProcessWire core version 3.0.252