Jump to content

Error de resultados en consultas SQL


Recommended Posts

Buenos días, estoy desarrollando un script conectado con la base de datos de PrestaShop y en principio todo me iba bien hasta que me he topado con un problema que no logro solucionar. Tengo dos consultas simples en sql que ejecutándolas vía phpMyAdmin van perfectas y las dos muestran un resultado correcto, pero… cuando estas mismas consultas las uso con la clase db de PrestaShop, una funciona y otra no.

 

Consultas (Todas dan el resultado que deberían)

SELECT COUNT('id_product') FROM XXX_product WHERE reference = 'ga-00898640';
// Resultado 1
SELECT COUNT('id_product') FROM XXX_product WHERE reference = 'ga-01210058';
// Resultado 1

 

Consultas en PHP

$consulta_sql = "SELECT COUNT('id_product') FROM ". _DB_PREFIX_ ."product WHERE reference = 'ga-00898640'";
$resultado = $db->getValue($consulta_sql);
// Resultado 0 (esta mal)
$consulta_sql = "SELECT COUNT('id_product') FROM ". _DB_PREFIX_ ."product WHERE reference = 'ga-01210058'";
$resultado = $db->getValue($consulta_sql);
// Resultado 1 (esta bien)

 

¿Tenéis alguna idea de donde puede estar el error?

 

Actualización: acabo de descubrir que de los +8000 registros de productos que hay en la tabla ps_product, la clase db solo lee alrededor de 2700 registros.

 

2º Actualización: El producto con referencia ga-00898640 tiene el id_product 298 y he observado que al hacer un select de todos los registros de la tabla product pasa del registro con id_product 295 al 302 (saltándose los registros del 296 al 301):

  } [98] => array(1) {
    ["id_product"] => string(3)
    "295"
  } [99] => array(1) {
    ["id_product"] => string(3)
    "302"
  }

 

3º Actualización: He probado a realizar una conexión por mysqli_connect (sin la clase db de PrestaShop) con las mismas consultas y el resultado es correcto, el fallo solo se produce cuando uso la clase db.

Edited by sergiorx8 (see edit history)
Link to comment
Share on other sites

Lo más recomendable es utilizar siempre el tipado, formato y delimitadores recomendados en las funciones de Prestashop, eg

   $reference = 'demo_18';
    $nbProducts = (int) Db::getInstance()->getValue(
    'SELECT COUNT(p.`id_product`) 
     FROM ' . _DB_PREFIX_ . 'product p  
     WHERE p.`reference` = \'' . pSQL($reference) . '\''
    );

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...