Database access
To get a raw PDO connection and use default PHP functions
$dbh = ipDb()->getConnection();
or use several handy functions to make your queries shorter and easier
Select multiple records
Use selectAll to fetch data without writing an SQL Query
//select all records from ip_tableName table. Prefix will be added automatically $results = ipDb()->selectAll('tableName', '*'); //select all records with condition $results = ipDb()->selectAll('tableName', '*', array('age' => 25)); //ordering and limiting the records $results = ipDb()->selectAll('tableName', '*', array('age' => 25), ' ORDER BY age LIMIT 5');
Use fetchAll function if you want to have full controll over SQL query
$table = ipTable('example'); $sql = "SELECT `firstName` FROM $table WHERE `lastName` = :lastName"; $condition = array('lastName' => 'Smith'); $results = ipDb()->fetchAll($sql, $condition);
Get a single row from a result set
By table name
$results = ipDb()->selectRow('tableName'); $results = ipDb()->selectRow('tableName', '*', array('id' => 25));
Using custom SQL query
$table = ipTable('example'); $sql = "SELECT `firstName`, `lastName` FROM $table WHERE id = :id"; $results = ipDb()->fetchRow($sql, array('id' => 25));
Get a single value from a result set
By table name
$results = ipDb()->selectValue('table', 'firstName', array('id' => 25));
Using custom SQL query
$table = ipTable('example'); $sql = "SELECT `firstName` FROM $table WHERE `id` = :id"; $params = array('id' => 25); $results = ipDb()->fetchValue($sql, $params);
Select a column
By table name
ipDb()->selectColumn('example', 'firstName', array('age' => 25));
Using custom SQL query
$table = ipTable('example'); $sql = "SELECT `firstName` FROM $table WHERE `age` = :age"; $params = array('age' => 25); $results = ipDb()->fetchValue($sql, $params);
By default fetchColumn fetches the first column of a result set. Specify a column name as second argument, if needed.
Insert a new record
/** Insert `John Smith` into example table */ $personId = ipDb()->insert('example', array('firstName' => 'John', 'lastName' => 'Smith'));
Delete records
ipDb()->delete('example', array('age' => 25));
Update table
Increase the sallary for all Johns in table 'ip_example'
ipDb()->update( 'example', array('salary' => 40000), array('FirstName' => 'John') );
Execute SQL query
/** Create example table */ $table = ipTable('example'); $sql = " CREATE TABLE IF NOT EXISTS $table ( `PersonId` int(11) NOT NULL AUTO_INCREMENT, `FirstName` varchar(255), `LastName` varchar(255), PRIMARY KEY (`PersonId`) ) "; ipDb()->execute($sql);
Handle database query errors
try{ ipDb()->execute($sql); }catch (\Ip\DbException $e){ ipLog()->log('yourPluginGroup/yourPluginName', 'Error while executing my database query: '.$e); }