Skip to content
AntonShevchuk edited this page Dec 4, 2012 · 22 revisions

Описание

Удобная обертка для PDO

Настройка

<?php
// configuration example
"db" => array(
    "connect" => array(
        "type" => "mysql",
        "host" => "hippo.nixsolutions.com",
        "name" => "p_mvc",
        "user" => "p_mvc",
        "pass" => "mvc",
    ),
    "defaultAdapter" => true
),

Использование

Соединение

<?php
// init settings, not connect!
$db->setConnect(array(
    'type' => 'mysql',
    'host' => 'localhost',
    'name' => 'db name',
    'user' => 'root',
    'pass' => ''
));

Квотирование и экранирование переменных

<?php
// quote variable
$db->quote($id)

Запросы

<?php
// query
$db->query("SET NAMES 'utf8'");

// plain insert/update/delete
// insert
$db->insert('some_table', array('col1'=>'foo', 'col2'=>'bar'));

// update
$db->update('some_table', array('col1'=>'bar', 'col2'=>'foo'), array('id'=>1));
$db->update('some_table', array('col1'=>'bar', 'col2'=>'foo'), 'id = 1');

// delete
$db->delete('some_table', array('id'=>1));
$db->delete('some_table', 'id = 1');

Выборки

<?php
// get one
$db->fetchOne("SELECT COUNT(*) FROM users");
 
// get row
$db->fetchRow("SELECT * FROM users WHERE id = ". $db->quote($id));
$db->fetchRow("SELECT * FROM users WHERE id = ?", array($id));
$db->fetchRow("SELECT * FROM users WHERE id = :id", array(':id'=>$id));

// get column
$db->fetchColumn("SELECT id FROM users WHERE ip = :ip", array(':ip'=>'127.0.0.1'));

// get array
$db->fetchAll("SELECT * FROM users WHERE ip = ?", array($ip));
 
// get pairs
$db->fetchPairs("SELECT ip, COUNT(id) FROM users GROUP BY ip", array());

// get group
$db->fetchGroup("SELECT ip, id FROM users");

Выборки в объекты

<?php
// get object
// .. to stdClass
$stdClass = $db->fetchObject('SELECT * FROM some_table WHERE id = ?', array($id));
// .. to new Some object
$someClass = $db->fetchObject('SELECT  * FROM some_table WHERE id = ?', array($id), 'Some');
// .. to exists instance of Some object
$someClass = $db->fetchObject('SELECT * FROM some_table WHERE id = ?', array($id), $someClass);

Транзакции

<?php
// controller code
if ($this->getDb()->transaction(function() {
    /**
     * @var \Bluz\Application $this
     */
    $this->getDb()->delete('acl_privileges');
})) {
    $this->getMessages()->addSuccess('All data was saved');
} else {
    $this->getMessages()->addError('Internal server error');
}

Clone this wiki locally