Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error en la consulta entre php pdo y postgresql

Estas en el tema de Error en la consulta entre php pdo y postgresql en el foro de PHP en Foros del Web. Hola, estoy haciendo un paginador con PDO, al crear la consulta simple me regresa todos los valores de la base de datos, sin embargo; al ...
  #1 (permalink)  
Antiguo 19/12/2019, 10:20
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
Puntos: 2
Error en la consulta entre php pdo y postgresql

Hola, estoy haciendo un paginador con PDO, al crear la consulta simple me regresa todos los valores de la base de datos, sin embargo; al ser un paginador debe traer los registros limitados por limit. Es importante mencionar que me estoy conectando a postgresql ya que la sintaxis muchas veces es diferente que la de mysql. Cuando ejecuto desde php esta consulta:
Código PHP:
$sqlRec 'SELECT * FROM sessions'
funciona de maravilla, pero no es lo que necesito, lo que necesito es limitarla para que me traiga 10 registros por pagina, pero cuando ejecuto esta consulta:
Código PHP:
$sqlRec 'SELECT * FROM sessions limit :starting, :nrecord'
simplemente no trae nada, no obstante si le quito el segundo parametro que es nrecord, empieza a paginar en 0, en la segunda hoja trae 10 registros, en la tercera trae 20 y asi sucesivamente.
Este es mi codigo de PDO y HTML:
Código PHP:
<?php 

          
if (!$_GET) {
               
header('Location:ordinaryConsultant.php?page=1');
              }
$record_by_page 10;
$total_records $sentence->rowCount();
$page $total_records/10;
$page ceil($page);
              
$starting = ($_GET['page']-1)*$record_by_page;

                    
$sqlRec 'SELECT * FROM sessions limit :starting, :nrecord';
                    
$sentenceRec $pdo->prepare($sqlRec);
                    
$sentenceRec->bindParam(':starting'$startingPDO::PARAM_INT);
                    
$sentenceRec->bindParam(':nrecord'$record_by_pagePDO::PARAM_INT);
                    
$sentenceRec->execute();
                    
$resultRec $sentenceRec->fetchAll();
                    
         
?>
            <div class="registros" id='agrega-registros' style="background-color: #35889936;">
              <?php foreach ($resultRec as $fila): ?>
            <div class='registros' style='background-color: #35889936; color: #FFF;'>
              <?php echo $fila['0'];  ?>
            </div>
              <?php endforeach ?>
            </div>
Por adelantado les doy las gracias y espero me puedan ayudar
__________________
paco alonso
  #2 (permalink)  
Antiguo 19/12/2019, 22:19
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Error en la consulta entre php pdo y postgresql

Cita:
Iniciado por madison_sg Ver Mensaje
Hola, estoy haciendo un paginador con PDO, al crear la consulta simple me regresa todos los valores de la base de datos, sin embargo; al ser un paginador debe traer los registros limitados por limit. Es importante mencionar que me estoy conectando a postgresql ya que la sintaxis muchas veces es diferente que la de mysql. Cuando ejecuto desde php esta consulta:
Código PHP:
$sqlRec 'SELECT * FROM sessions'
funciona de maravilla, pero no es lo que necesito, lo que necesito es limitarla para que me traiga 10 registros por pagina, pero cuando ejecuto esta consulta:
Código PHP:
$sqlRec 'SELECT * FROM sessions limit :starting, :nrecord'
simplemente no trae nada, no obstante si le quito el segundo parametro que es nrecord, empieza a paginar en 0, en la segunda hoja trae 10 registros, en la tercera trae 20 y asi sucesivamente.
Este es mi codigo de PDO y HTML:
Código PHP:
<?php 

          
if (!$_GET) {
               
header('Location:ordinaryConsultant.php?page=1');
              }
$record_by_page 10;
$total_records $sentence->rowCount();
$page $total_records/10;
$page ceil($page);
              
$starting = ($_GET['page']-1)*$record_by_page;

                    
$sqlRec 'SELECT * FROM sessions limit :starting, :nrecord';
                    
$sentenceRec $pdo->prepare($sqlRec);
                    
$sentenceRec->bindParam(':starting'$startingPDO::PARAM_INT);
                    
$sentenceRec->bindParam(':nrecord'$record_by_pagePDO::PARAM_INT);
                    
$sentenceRec->execute();
                    
$resultRec $sentenceRec->fetchAll();
                    
         
?>
            <div class="registros" id='agrega-registros' style="background-color: #35889936;">
              <?php foreach ($resultRec as $fila): ?>
            <div class='registros' style='background-color: #35889936; color: #FFF;'>
              <?php echo $fila['0'];  ?>
            </div>
              <?php endforeach ?>
            </div>
Por adelantado les doy las gracias y espero me puedan ayudar
la sintaxis suele variar, te leiste los ejemplos de Limit de Postgres?? recuerda que cada version puede agregar o no tener carcateristicas de la version de l servidor a la de tu local,
https://www.postgresql.org/docs/9.3/queries-limit.html

segun su manual,

$sqlRec = 'SELECT * FROM sessions limit :starting, :nrecord';
$sentenceRec = $pdo->prepare($sqlRec);
$sentenceRec->bindParam(':starting', $starting, PDO::PARAM_INT);
$sentenceRec->bindParam(':nrecord', $record_by_page,

deberia ser
$sqlRec = 'SELECT * FROM sessions limit :nrecord OFFSET :starting';
$sentenceRec = $pdo->prepare($sqlRec);
$sentenceRec->bindParam(':starting', $starting, PDO::PARAM_INT);
$sentenceRec->bindParam(':nrecord', $record_by_page,
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 20/12/2019, 09:21
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
Puntos: 2
Respuesta: Error en la consulta entre php pdo y postgresql

Te lo agradezco muchisimo, ese pequeño detalle me estaba volviendo loco y tu solución me funcionó perfectamente bien. nuevamente muchas gracias.
__________________
paco alonso

Etiquetas: dato, pdo, postgresql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:22.