# Accessing Database with Db Class

Linking to the database:

/**
 * @var \Db $db
 */
$db = Db::getInstance();

The primary call to this technique introduces the link to the database and returns a similar link to all the following calls. $db in this model will be reused in all the following models.

# Db class methods

# Execute a raw SQL request (SELECT only)

$request = 'SELECT `id_table` FROM `' . _DB_PREFIX_ . 'some_table` ...';

/** @var array $result */
$result = $db->executeS($request);

This method deals with raw SQL requests so the _DB_PREFIX_ must be used.

Returns an affiliated array containing all the matching rows for the query.

# Execute a SELECT request with only one row

$request = 'SELECT `first_name`, `last_name` FROM `' . _DB_PREFIX_ . 'some_table` ...';

/** @var array $customer */
$customer = $db->getRow($request);

This method deals with raw SQL requests so the _DB_PREFIX_ must be used.

Returns an affiliated array containing the first row matching the resultant query. This function directly includes LIMIT 1 to the query.

# Execute a SELECT request with only a single value

$request = 'SELECT `count('sales')` FROM `' . _DB_PREFIX_ . 'some_table` ...';

/** @var string|false $salesCount */
$salesCount = $db->getValue($request);

This method deals with raw SQL requests so the _DB_PREFIX_ must be used.

This technique is helpful when you need just one value to recover from the database. It forestalls to loop in a few arrays so as to get the primary value of the principal column.

# Execute a raw SQL request (UPDATE, INSERT…)

$request = 'INSERT INTO `' . _DB_PREFIX_ . 'some_table` (`id_table`) VALUES (10)';

/** @var bool */
$db->execute($request);

This will return a boolean whether a query is executed successfully or not. This function should not be used for select queries.

# Insert a row in the database

/** @var bool $result */
$result = $db->insert(
    'db_table',
    array(
        'id_lang' => (int) $lang,
        'value' => pSQL($value),
        'date_upd' => date('Y-m-d H:i:s'),
    )
);

_DB_PREFIX_ will be added to the table name as a prefix automatically.

This will return a boolean saying if the request was appropriately executed or not.

# Update a row in the database

/** @var bool $result */
$result = $db->update(
    'db_table',
    array(
        'value' => pSQL($value),
        'date_upd' => date('Y-m-d H:i:s'),
    ),
    'id_table = 10',
    1,
    true
);

_DB_PREFIX_ will be added to the table name as a prefix automatically.

This will return a boolean saying if the request was appropriately executed or not.