Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

lunes, 25 de julio de 2016

Bases de datos con PrestaShop

0


La clase "DB" está hecho de dos clases:

La clase "Db", que se puede encontrar en el /classes/db/Db.php.
Con una subclase que se extiende de la clase "Db".  3 opciones: MySQL, MySQLi y PDO.


PDO se utiliza de forma predeterminada; sin embargo, si la extensión PDO no está instalado en el servidor, la extensión MySQLi se utiliza en su lugar. Y si MySQLi no está instalado , se utiliza MySQL.


Se recomienda crear una instancia:
$db = Db::getInstance(); ó $db = Db::getInstance(_PS_USE_SQL_SLAVE_);

Sólo se debe utilizar el argumento PS_USE_SQL_SLAVE a la hora de hacer consultas de sólo lectura, y sólo si éstos no necesita un resultado que se actualize inmediatamente con un resultado.

Metodos disponibles:



insertar()



insert ($ tabla, $ data, $ null_values = false, $ use_cache = true, $ type = Db :: INSERT, add_prefix $ = true).



Este método se ha creado para generar automáticamente la inserción de datos en la base de datos, a partir de una tabla de datos. Debe ser utilizado en lugar de hacer consultas INSERT, a menos que estas consultas sean bastante complejas.

ejemplo:

$target = Tools::getValue('id');
$name = Tools::getValue('name');
Db::getInstance()->insert('target_table', array(
    'id_target' => (int)$target,
    'name'      => pSQL($name),
));

Activar este código genera la siguiente consulta SQL:

INSERT INTO `prefix_target_table` (`id_target`, `name`) VALUES (10, 'myName')

update()

update($table, $data, $where = '', $limit = 0, $null_values = false, $use_cache = true, $add_prefix = true)

Este método funciona como el método insert() lo hace, pero para la actualización de datos.

delete()

delete($table, $where = '', $limit = 0, $use_cache = true, $add_prefix = true).

Este método es un equivalente para insertar () y update (), solo que para la eliminación de datos.
El parámetro $limit  le permite limitar el número de registros a eliminar. La otra ventaja de este método es que va a ser utilizado por el sistema de caché de PrestaShop, y por lo tanto va a borrar las consultas afectadas en la memoria caché, salvo que el $use_cache sea falsa.

ejemplo:

Db::getInstance()->delete('target_table', 'myField < 15', 3);

execute()


execute($sql, $use_cache = 1).

Este método ejecuta la consulta SQL. Sólo se debe utilizar para las consultas de "escribir" (INSERT, UPDATE, DELETE, TRUNCATE, etc.), ya que también elimina la caché de consultas.

ejemplo:

$sql = 'DELETE FROM '._DB_PREFIX_.'product WHERE active = 0';
if (!Db::getInstance()->execute($sql))
    die('Erreur etc.)';

query()

query($sql).

hace lo mismo que el método execute(), con dos excepciones:
-   Sin gestión de control de caché.
-   No devolverá un valor lógico; en su lugar devuelve un recurso de base de datos que se puede utilizar con otros métodos de la clase de base de datos, tales como nextrow().

executeS()

executeS($sql, $array = true, $use_cache = 1).

Este método ejecuta una consulta SQL, y hace que todos los resultados estén disponibles a través de una matriz multidimensional. Sólo se debe utilizar para las consultas de "leer". Los resultados de la consulta se almacenan en caché, a menos que el parámetro $ use_cache se establece en false. El segundo parámetro, $array(), es obsoleto y no debe utilizarse.

ejemplo:

$sql = 'SELECT * FROM '._DB_PREFIX_.'shop';
if ($results = Db::getInstance()->ExecuteS($sql))
    foreach ($results as $row)
        echo $row['id_shop'].' :: '.$row['name'].'<br />';

getRow()

getRow($sql, $use_cache = 1).

Este método realiza una consulta SQL y recupera la primera fila de los resultados. Sólo se debe utilizar con las consultas de "leer". Los resultados de la consulta se almacenan en caché.
Este método agrega automáticamente una cláusula LIMIT para la consulta.


ejemplo:

$sql = 'SELECT * FROM '._DB_PREFIX_.'shop
    WHERE id_shop = 42’;
if ($row = Db::getInstance()->getRow($sql))
    echo $row['id_shop'].' :: '.$row['name'];

getValue()

getValue($sql, $use_cache = 1).

Funciona igual que getRow(). 
getValue () no protege el código de los intentos de hacking.Tiene que asegurar sus datos usted mismo.
El método de PrestaShop psql($valor) ayuda a proteger su base de datos contra las inyecciones SQL.


Algunos otros métodos
Insert_id(): devuelve el identificador creado durante la última consulta INSERT.
Affected_rows(): Devuelve el número de líneas afectadas por la última consulta UPDATE o DELETE.
getMsgError(): devuelve el mensaje de error más reciente, si la consulta ha fallado.
getNumberError(): devuelve el número de error más reciente, si la consulta ha fallado.


Puedes completar la información aquí y aquí

Related Posts:

  • Arrays en prestaShop Esto es realmente una tontería, pero a la vez es una de las diferencias de otros lenguajes.Y tal vez os ayude. Primero recuerda que un array … Read More
  • Pedidos internos I Todas las tiendas tienen sus propios distribuidores y necesitan hacer pedidos a dichos distribuidores. En este caso necesito que un pedido se haga de… Read More
  • Bases de datos con PrestaShop La clase "DB" está hecho de dos clases: La clase "Db", que se puede encontrar en el /classes/db/Db.php. Con una subclase que se extiende&n… Read More
  • Pedidos Internos II Otra forma distinta de gestionar automáticamente un pedido seria a través de objetos. Veamos un ejemplo: jungla.xsd <schema xmlns="http://w… Read More
  • Post request Curl Como enviar un post con un pedido xml con PrestaShop. Aquí os dejo un ejemplo que me han dejado en las prácticas, muy útil! <?php $service_ur… Read More

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)