sergiorx8 Posted March 10, 2022 Share Posted March 10, 2022 (edited) 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 March 10, 2022 by sergiorx8 (see edit history) Link to comment Share on other sites More sharing options...
Manuel_GT Posted March 11, 2022 Share Posted March 11, 2022 La función getValue admite un segundo parámetro que desactiva la caché. ¿Has probado a ponerlo a false? Db::getInstance()->getValue($sql,false); Un saludo. Link to comment Share on other sites More sharing options...
ventura Posted March 13, 2022 Share Posted March 13, 2022 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now