Eh estado trabajando en un driver simple para mysql y me he encontrado con el siguiente caso al momento de devolver datos cuando el resultado de la query es de solo un registro.
Aplicando un print_r para debug me doy cuenta que el array esta bien formado pero tiene 'algo curioso', que efectivamente se trata de un array y no de una matriz por lo que al recorrerlo con un foreach no muestra los resultados.
Código PHP:
stdClass Object
(
[id] => 1
[value_1] => test
[value_2] => test
[value_3] => test
)
Sin embargo cuando el resultado de la query es de mas registros, logicamente me crea muy bien mi matriz de resultados por lo que puedo recorrerla y presentar mis datos sin problemas.
Código PHP:
Array
(
[0] => stdClass Object
(
[id] => 2
[value_1] => test2
[value_2] => test2
[value_3] => test2
)
[1] => stdClass Object
(
[id] => 1
[value_1] => test
[value_2] => test
[value_3] => test
)
)
El problema surge en la implementacion, suponiendo que tengo un metodo que me muestre la lista de esos elementos, en mi implementacion quedaria asi:
Código PHP:
<?php foreach($obj->getElementos() as $elemento):?>
<tr>
<td><?php echo $elemento->id; ?></td>
<td><?php echo $elemento->value_1; ?></td>
<td><?php echo $elemento->value_2; ?></td>
<td><?php echo $elemento->value_3; ?></td>
</tr>
<?php endforeach;?>
Cuando la lista de esos elementos sea de 1 solo, los resultados no son mostrados, el metodo 'se compone' cuando la lista es mayor y es donde surge mi duda de como solucionar ese problema, aqui les dejo el metodo que me crear mi matriz de resultados y espero puedan darme algunos consejos de como solucionarlo, gracias.
Código PHP:
private function _fetchQuery(){
$this->_fetched = array();
if($this->numRows() == 1) {
$this->_fetched = mysql_fetch_object($this->_result);
} else {
while($row = mysql_fetch_object($this->_result)) {
array_push($this->_fetched, $row);
}
}
return $this->_fetched;
}