Poly db - polymedio/polyframework GitHub Wiki
====== Poly_DB ======
''Poly_DB'' es la clase que abstrae la conexión a la base de datos. ''Poly_DB'' extiende PDO agregando la funcionalidad de obtener una instancia configurada por configuración a través de un factoryMethod, similar a un singleton.
La configuración se encuentra en ''app/config/connections.php'':
<code php>
$config['DB'] = array(
'default' => array(
'host' => 'localhost',
'dbname' => 'database',
'username' => 'user1',
'password' => 'secret',
'driver' => 'mysql',
'encoding' => 'utf8',
),
'slave => array(
'host' => 'otherhost',
'dbname' => 'database',
'username' => 'user2',
'password' => 'secret',
'driver' => 'mysql',
'encoding' => 'utf8',
),
);
</code>
Luego ''Poly_DB'' esta lista para usarse:
<code php>
// crea una instancia de Poly_DB leyendo los parámetros de conexión con Poly_Config
$DB = Poly_DB::getInstance(); // equivalente a Poly_DB::getInstance('default')
</code>
Luego podemos trabajar con el API de ''PDO'':
<code php>
$stmt = $DB->query('SELECT * FROM articulos');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
echo $row['titulo'] . '<br/>';
}
/* equivalente al anterior */
foreach($stmt->fetchAll() as $row) {
echo $row['titulo'] . '<br/>';
}
</code>
Y asi podemos ejecutar sentencias preparadas:
<code php>
$stmt = $DB->prepare("SELECT * FROM articulos WHERE titulo LIKE :titulo");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
//parametros
$stmt->bindValue(':titulo', "%este es%", PDO::PARAM_STR);
$stmt->execute();
pr($stmt->fetchAll());
/*
Array
(
[0] => Array
(
[id] => 3
[titulo] => este es un articulo
[texto] =>
[autor_id] => 0
)
[1] => Array
(
[id] => 4
[titulo] => este es otro articulo
[texto] =>
[autor_id] => 0
)
)
*/
</code>