Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Error con foreach PDO

Estas en el tema de Error con foreach PDO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos estoy intentando acceder a una noticia via get imprimiendo en la url la id de la noticia y el titulo. en el ...
  #1 (permalink)  
Antiguo 12/12/2011, 08:49
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Exclamación Error con foreach PDO

Hola a todos estoy intentando acceder a una noticia via get imprimiendo en la url la id de la noticia y el titulo.

en el index hice un enlace de este modo:

Código PHP:
<p><a href="noticia.php?id=<?php echo $d['id_notice']; ?>&title=<?php echo str_replace(" ""-"$d['title']); ?>"><?php echo $d['title']; ?></a></p>
he creado esta funcion

Código PHP:
    public function notice(){
        
self::set_names();
        
$sql="SELECT * FROM notices WHERE id=? AND title=?";
        
$stmt=$this->dbh->prepare($sql);
        if(
$stmt->execute(array($_GET["id"], $_GET["title"]))){
            while (
$row $stmt->fetch()){
                
$this->n[]=$row;
            }
            return 
$this->n;
            
$this->dbh=null;
        }
    } 
y la he llamado asi a noticia.php:

Código PHP:
$obj= new Work();
$datos=$obj->notice();

    <div id="body">
        <div id="wrapper">
        <?php
        
foreach ($datos as $d){
            
?>
        <p><?php echo $d['title']; ?></p>
        <?php
        
}
        
?>
        </div>
    </div>
    <div id="footer">
    </div>
El problema es que cuando entro en la noticia por ejemplo:

http://localhost/PDO/noticia.php?id=1&title=Lorem-Ipsum

me da este error

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\PDO\noticia.php on line 12

he leido que es porque la variable datos no es un array, pero no logro arreglarlo.

Alguien sabe como solucionarlo?

Gracias de antemano
  #2 (permalink)  
Antiguo 12/12/2011, 09:21
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Error con foreach PDO

no entiendo para que usas una variable de la clase ($this->n), cuando solo necesitas una variable para construir el array a devolver, puede que ese sea el problema, que $this->n no exista:

Código PHP:
$n = Array(); //creamos el array local
while ($row $stmt->fetch()){
     
$n[]=$row//seteamos un nuevo elemento del array
}
 return 
$n//devolvemos el array
 
$this->dbh=null// esta linea NUNCA se ejecutará, debe ir ANTES del Return 
de igual forma, ¿no es mejor usar fetchAll?: http://www.php.net/manual/en/pdostatement.fetchall.php
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 12/12/2011, 09:44
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Error con foreach PDO

Cita:
Iniciado por maycolalvarez Ver Mensaje
no entiendo para que usas una variable de la clase ($this->n), cuando solo necesitas una variable para construir el array a devolver, puede que ese sea el problema, que $this->n no exista:

Código PHP:
$n = Array(); //creamos el array local
while ($row $stmt->fetch()){
     
$n[]=$row//seteamos un nuevo elemento del array
}
 return 
$n//devolvemos el array
 
$this->dbh=null// esta linea NUNCA se ejecutará, debe ir ANTES del Return 
de igual forma, ¿no es mejor usar fetchAll?: http://www.php.net/manual/en/pdostatement.fetchall.php
..::EDITADO::..
Gracias por la respuesta, lo he resuelto, no funcionaba porque me equvoque al definir $n como array
Bueno no use fetchAll porque todavia estoy aprendiendo PDO
Gracias +1

Última edición por ILuzbel; 12/12/2011 a las 09:59

Etiquetas: foreach, pdo, php, select
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 15:29.