Es hora de aclarar porque no te funciona el ejemplo previo: el ejemplo que te dio @Alexis88 es la forma correcta cuando usas un metodo para obtener 1 registro a la vez, el cual se carga en una variable $row y puede contener el registro (evaluado como TRUE por el while) o el valor booleano FALSE cuando se acabaron los registros extraidos de la consulta.
Asi...
cuando tienes un fetchAll() la cosa cambia porque ya no tendrias un arreglo de campos sino un arreglo de arreglos de campos Cita: get() --> un registro = un array de campos
fetchAll() --> un conjunto de registros = un array de arrays de campos
EJEMPLO funcional COMPLETO (con datos "simulados")
Código PHP:
Ver original<?php
// Simulo accion de base de datos
class Contactos
{
/*
Datos simulados:
codigo email nombre telefono
*/
private $_resultados =
public function obtenerContactos()
{
return $this->_resultados;
}
public function getContacto()
{
if ($current = current($this->_resultados
)) {
next($this->_resultados
); return $current;
}
return false;
}
}
$cContacto = new Contactos;
// Desde aca lo que posteaste:
$registros = $cContacto->obtenerContactos();
echo "
<table border=\"1\">
<tr>
<th>codigo</th>
<th>email</th>
<th>nombre</th>
<th>telefono</th>
</tr>";
foreach ($registros as $res)
{
echo "<tr>
<td>{$res["codigo"]}</td>
<td>{$res["email"]}</td>
<td>{$res["nombre"]}</td>
<td>{$res["telefono"]}</td>
</tr>";
}
echo "</table>";
RESULTADO: EJEMPLO funcional #2, ahora uso getContacto()
La diferencia es que el get() me trae SOLO UN REGISTRO o FALSE cuando no hay
Código PHP:
Ver original<?php
// Simulo accion de base de datos
class Contactos
{
/*
Datos simulados:
codigo email nombre telefono
*/
private $_resultados =
public function obtenerContactos()
{
return $this->_resultados;
}
public function getContacto()
{
if ($current = current($this->_resultados
)) {
next($this->_resultados
); return $current;
}
return false;
}
}
$cContacto = new Contactos;
// Simulo fetchAll()
$registros = $cContacto->obtenerContactos();
echo "
<table border=\"1\">
<tr>
<th>codigo</th>
<th>email</th>
<th>nombre</th>
<th>telefono</th>
</tr>";
while ($res = $cContacto->getContacto())
{
echo "<tr>
<td>{$res["codigo"]}</td>
<td>{$res["email"]}</td>
<td>{$res["nombre"]}</td>
<td>{$res["telefono"]}</td>
</tr>";
}
echo "</table>";
Y produce el MISMO RESULTADO EXITOSO: