Generando resultados de consulta

Hay varias formas de generar resultados de consultas:

Matrices de resultados

obtenerResultado()

Este método devuelve el resultado de la consulta como una matriz de objetos, o una matriz vacía en caso de error.

Obtener una matriz de stdClass

Normalmente usarás esto en un foreach bucle, así:

<?php

$query = $db->query('YOUR QUERY');

foreach ($query->getResult() as $row) {
    echo $row->title;
    echo $row->name;
    echo $row->body;
}

El método anterior es un alias de Higgs\Database\BaseResult::getResultObject().

Obtener una matriz de matriz

Puede pasar la cadena “matriz” si desea obtener sus resultados como una matriz de matrices:

<?php

$query = $db->query('YOUR QUERY');

foreach ($query->getResult('array') as $row) {
    echo $row['title'];
    echo $row['name'];
    echo $row['body'];
}

El uso anterior es un alias de `getResultArray()`_.

Obtener una matriz de objetos personalizados

También puedes pasar una cadena a getResult() que representa una clase para crear una instancia para cada objeto de resultado

<?php

$query = $db->query('SELECT * FROM users;');

foreach ($query->getResult(\App\Entities\User::class) as $user) {
    echo $user->name;          // access attributes
    echo $user->reverseName(); // or methods defined on the 'User' class
}

El método anterior es un alias de `getCustomResultObject()`_.

obtenerArrayResultados()

Este método devuelve el resultado de la consulta como una matriz pura o vacía. matriz cuando no se produce ningún resultado. Normalmente usarás esto en un foreach bucle, así:

<?php

$query = $db->query('YOUR QUERY');

foreach ($query->getResultArray() as $row) {
    echo $row['title'];
    echo $row['name'];
    echo $row['body'];
}

Filas de resultados

obtener fila()

Este método devuelve una única fila de resultados. Si su consulta tiene más de una fila, devuelve solo la primera fila. El resultado se devuelve como un objeto. Aquí hay un ejemplo de uso:

<?php

$query = $db->query('YOUR QUERY');

$row = $query->getRow();

if (isset($row)) {
    echo $row->title;
    echo $row->name;
    echo $row->body;
}

Si desea que se devuelva una fila específica, puede enviar el número de fila como un dígito en el primer parámetro:

<?php

$row = $query->getRow(5);

También puedes agregar un segundo parámetro String, que es el nombre de una clase. para crear una instancia de la fila con:

<?php

$query = $db->query('SELECT * FROM users LIMIT 1;');
$row   = $query->getRow(0, \App\Entities\User::class);

echo $row->name;           // access attributes
echo $row->reverse_name(); // or methods defined on the 'User' class

getRowArray()

Idéntico al método row() anterior, excepto que devuelve una matriz. Ejemplo:

<?php

$query = $db->query('YOUR QUERY');

$row = $query->getRowArray();

if (isset($row)) {
    echo $row['title'];
    echo $row['name'];
    echo $row['body'];
}

Si desea que se devuelva una fila específica, puede enviar el número de fila como un dígito en el primer parámetro:

<?php

$row = $query->getRowArray(5);

Además, puedes caminar hacia adelante/atrás/primero/último a través de tu resultados usando estas variaciones:

$fila = $consulta->getFirstRow()
$fila = $consulta->getLastRow()
$fila = $consulta->getNextRow()
$fila = $consulta->getPreviousRow()

Por defecto devuelven un objeto a menos que pongas la palabra «matriz» en el parámetro:

$fila = $consulta->getFirstRow('matriz')
$fila = $consulta->getLastRow('matriz')
$fila = $consulta->getNextRow('matriz')
$fila = $consulta->getPreviousRow('matriz')

Nota

All the methods above will load the whole result into memory (captación previa). Utilice getUnbufferedRow() para procesar archivos grandes conjuntos de resultados.

getUnbufferedRow()

Este método devuelve una única fila de resultados sin precargar el conjunto resulta en la memoria como lo hace row(). Si su consulta tiene más de una fila, devuelve la fila actual y mueve el puntero de datos internos hacia adelante.

<?php

$query = $db->query('YOUR QUERY');

while ($row = $query->getUnbufferedRow()) {
    echo $row->title;
    echo $row->name;
    echo $row->body;
}

Para usar con MySQLi, puede configurar el modo de resultado de MySQLi en MYSQLI_USE_RESULT para ahorrar el máximo de memoria. El uso de esto no es Generalmente se recomienda, pero puede ser beneficioso en algunas circunstancias. como escribir consultas grandes en csv. Si cambia el modo de resultado ser consciente de las compensaciones asociadas con ello.

<?php

$db->resultMode = MYSQLI_USE_RESULT; // for unbuffered results

$query = $db->query('YOUR QUERY');

$file = new \Higgs\Files\File(WRITEPATH . 'data.csv');

$csv = $file->openFile('w');

while ($row = $query->getUnbufferedRow('array')) {
    $csv->fputcsv($row);
}

$db->resultMode = MYSQLI_STORE_RESULT; // return to default mode

Nota

When using MYSQLI_USE_RESULT all subsequent calls on the same La conexión generará un error hasta que se hayan obtenido todos los registros o Se ha realizado una llamada freeResult(). El método getNumRows() sólo Devuelve el número de filas según la posición actual del puntero de datos. Las tablas MyISAM permanecerán bloqueadas hasta que se hayan recuperado todos los registros o se ha realizado una llamada freeResult().

Opcionalmente, puede pasar “objeto” (predeterminado) o “matriz” para especificar el tipo del valor devuelto:

<?php

$query->getUnbufferedRow();         // object
$query->getUnbufferedRow('object'); // object
$query->getUnbufferedRow('array');  // associative array

Objetos de resultados personalizados

En su lugar, puede obtener los resultados como una instancia de una clase personalizada. de una stdClass o matriz, como getResult() y getResultArray() los métodos lo permiten. Si la clase aún no está cargada en la memoria, el Autocargador intentará cargarlo. El objeto tendrá todos los valores devueltos desde el base de datos establecida como propiedades. Si estos han sido declarados y no son públicos entonces deberías proporcionar un método __set() para permitir su configuración.

Ejemplo:

<?php

namespace App\Entities;

class User
{
    public $id;
    public $email;
    public $username;

    protected $lastLogin;

    public function lastLogin($format)
    {
        return $this->lastLogin->format($format);
    }

    public function __set($name, $value)
    {
        if ($name === 'lastLogin') {
            $this->lastLogin = DateTime::createFromFormat('!U', $value);
        }
    }

    public function __get($name)
    {
        if (isset($this->{$name})) {
            return $this->{$name};
        }
    }
}

Además de los dos métodos enumerados a continuación, los siguientes métodos también pueden tome un nombre de clase para devolver los resultados como: getFirstRow(), getLastRow(), getNextRow() y getPreviousRow().

obtenerObjetoResultadoPersonalizado()

Devuelve el conjunto de resultados completo como una matriz de instancias de la clase solicitada. El único parámetro es el nombre de la clase a crear una instancia.

Ejemplo:

<?php

$query = $db->query('YOUR QUERY');

$rows = $query->getCustomResultObject(\App\Entities\User::class);

foreach ($rows as $row) {
    echo $row->id;
    echo $row->email;
    echo $row->lastLogin('Y-m-d');
}

getCustomRowObject()

Devuelve una sola fila de los resultados de su consulta. El primer parámetro es la fila. número de los resultados. El segundo parámetro es el nombre de la clase para crear una instancia.

Ejemplo:

<?php

$query = $db->query('YOUR QUERY');

$row = $query->getCustomRowObject(0, \App\Entities\User::class);

if (isset($row)) {
    echo $row->email;              // access attributes
    echo $row->lastLogin('Y-m-d'); // access class methods
}

También puedes usar el método getRow() exactamente de la misma manera.

Ejemplo:

<?php

$row = $query->getRow(0, \App\Entities\User::class);

Métodos auxiliares de resultados

getFieldCount()

El número de CAMPOS (columnas) devueltos por la consulta. Asegúrate de llamar el método que utiliza el objeto de resultado de su consulta:

<?php

$query = $db->query('SELECT * FROM my_table');

echo $query->getFieldCount();

obtener nombres de campo()

Devuelve una matriz con los nombres de los CAMPOS (columnas) devueltos por la consulta. Asegúrese de llamar al método utilizando el objeto de resultado de su consulta:

<?php

$query = $db->query('SELECT * FROM my_table');

echo $query->getFieldNames();

obtenerNumRows()

El número de registros devueltos por la consulta. Asegúrate de llamar el método que utiliza el objeto de resultado de su consulta:

<?php

$query = $db->query('SELECT * FROM my_table');

echo $query->getNumRows();

Nota

Because SQLite3 lacks an efficient method returning a record count, Higgs buscará y almacenará en buffer los registros de resultados de la consulta internamente y devuelve un recuento de la matriz de registros resultante, lo que puede resultar ineficiente.

resultado libre()

Libera la memoria asociada al resultado y elimina el resultado. ID de recurso. Normalmente PHP libera su memoria automáticamente al final de ejecución del script. Sin embargo, si está ejecutando muchas consultas en un script particular es posible que desee liberar el resultado después de cada consulta El resultado se ha generado para reducir el consumo de memoria.

Ejemplo:

<?php

$query = $thisdb->query('SELECT title FROM my_table');

foreach ($query->getResult() as $row) {
    echo $row->title;
}

$query->freeResult(); // The $query result object will no longer be available

$query2 = $db->query('SELECT name FROM some_table');

$row = $query2->getRow();
echo $row->name;
$query2->freeResult(); // The $query2 result object will no longer be available

búsqueda de datos()

Este método establece el puntero interno para que la siguiente fila de resultados sea traído. Sólo es útil en combinación con getUnbufferedRow().

Acepta un valor entero positivo, que por defecto es 0 y devuelve verdadero en caso de éxito o falso en caso de fracaso.

<?php

$query = $db->query('SELECT `field_name` FROM `table_name`');
$query->dataSeek(5); // Skip the first 5 rows
$row = $query->getUnbufferedRow();

Nota

Not all database drivers support this feature and will return false. Lo más notable es que no podrás usarlo con PDO.

Referencia de clase

class Higgs\Database\BaseResult
getResult([$type = 'object'])
Parámetros:
  • $type (string) – tipo de resultados solicitados: matriz, objeto o nombre de clase

Devuelve:

matriz que contiene las filas recuperadas

Tipo del valor devuelto:

matriz

Un contenedor para getResultArray(), getResultObject() y métodos getCustomResultObject().

Uso: consulte Matrices de resultados.

getResultArray()
Devuelve:

matriz que contiene las filas recuperadas

Tipo del valor devuelto:

matriz

Devuelve los resultados de la consulta como una matriz de filas, donde cada La fila es en sí misma una matriz asociativa.

Uso: consulte Matrices de resultados.

getResultObject()
Devuelve:

matriz que contiene las filas recuperadas

Tipo del valor devuelto:

matriz

Devuelve los resultados de la consulta como una matriz de filas, donde cada fila es un objeto de tipo stdClass.

Uso: consulte Obtener una matriz de stdClass.

getCustomResultObject($class_name)
Parámetros:
  • $class_name (string) – nombre de clase para las filas resultantes

Devuelve:

matriz que contiene las filas recuperadas

Tipo del valor devuelto:

matriz

Devuelve los resultados de la consulta como una matriz de filas, donde cada fila es una instancia de la clase especificada.

getRow([$n = 0[, $type = 'object']])
Parámetros:
  • $n (int) – índice de la fila de resultados de la consulta que se devolverá

  • $type (string) – tipo de resultado solicitado: matriz, objeto o nombre de clase

Devuelve:

la fila solicitada o nula si no existe

Tipo del valor devuelto:

mixto

Un contenedor para getRowArray(), getRowObject() y Métodos getCustomRowObject().

Uso: consulte Filas de resultados.

getUnbufferedRow([$type = 'object'])
Parámetros:
  • $type (string) – tipo de resultado solicitado: matriz, objeto o nombre de clase

Devuelve:

siguiente fila del conjunto de resultados o nula si no existe

Tipo del valor devuelto:

mixto

Obtiene la siguiente fila de resultados y la devuelve en el formulario solicitado.

Uso: consulte Filas de resultados.

getRowArray([$n = 0])
Parámetros:
  • $n (int) – índice de la fila de resultados de la consulta que se devolverá

Devuelve:

la fila solicitada o nula si no existe

Tipo del valor devuelto:

matriz

Devuelve la fila del resultado solicitado como una matriz asociativa.

Uso: consulte Filas de resultados.

getRowObject([$n = 0])
Parámetros:
  • $n (int) – índice de la fila de resultados de la consulta que se devolverá :returns: la fila solicitada o nula si no existe

Tipo del valor devuelto:

clase estándar

Devuelve la fila de resultados solicitada como un objeto de tipo clase estándar.

Uso: consulte Filas de resultados.

getCustomRowObject($n, $type)
Parámetros:
  • $n (int) – Índice de la fila de resultados a devolver

  • $class_name (string) – nombre de clase para la fila resultante

Devuelve:

la fila solicitada o nula si no existe

Tipo del valor devuelto:

$tipo

Devuelve la fila del resultado solicitado como una instancia del clase solicitada.

dataSeek([$n = 0])
Parámetros:
  • $n (int) – índice de la fila de resultados que se devolverá a continuación

Devuelve:

verdadero en caso de éxito, falso en caso de error

Tipo del valor devuelto:

booleano

Mueve el puntero de la fila de resultados internos al desplazamiento deseado.

Uso: consulte Métodos auxiliares de resultados.

setRow($key[, $value = null])
Parámetros:
  • $key (mixed) – nombre de columna o matriz de pares clave/valor

  • $valor (mixed) – valor para asignar a la columna, $key es un nombre de campo único

Tipo del valor devuelto:

nulo

Asigna un valor a una columna en particular.

getNextRow([$type = 'object'])
Parámetros:
  • $type (string) – tipo de resultado solicitado: matriz, objeto o nombre de clase

Devuelve:

siguiente fila del conjunto de resultados, o nula si no existe

Tipo del valor devuelto:

mixto

Devuelve la siguiente fila del conjunto de resultados.

getPreviousRow([$type = 'object'])
Parámetros:
  • $type (string) – tipo de resultado solicitado: matriz, objeto o nombre de clase

Devuelve:

fila anterior del conjunto de resultados, o nula si no existe

Tipo del valor devuelto:

mixto

Devuelve la fila anterior del conjunto de resultados.

getFirstRow([$type = 'object'])
Parámetros:
  • $type (string) – tipo de resultado solicitado: matriz, objeto o nombre de clase

Devuelve:

Primera fila del conjunto de resultados, o nulo si no existe

Tipo del valor devuelto:

mixto

Devuelve la primera fila del conjunto de resultados.

getLastRow([$type = 'object'])
Parámetros:
  • $type (string) – tipo de resultado solicitado: matriz, objeto o nombre de clase

Devuelve:

última fila del conjunto de resultados, o nula si no existe

Tipo del valor devuelto:

mixto

Devuelve la última fila del conjunto de resultados.

getFieldCount()
Devuelve:

Número de campos en el conjunto de resultados

Tipo del valor devuelto:

int

Devuelve el número de campos del conjunto de resultados.

Uso: consulte Métodos auxiliares de resultados.

getFieldNames()
Devuelve:

Matriz de nombres de columnas

Tipo del valor devuelto:

matriz

Devuelve una matriz que contiene los nombres de los campos en el conjunto resultante.

getFieldData()
Devuelve:

matriz que contiene metadatos de campo

Tipo del valor devuelto:

matriz

Genera una matriz de objetos stdClass que contienen metadatos de campo.

getNumRows()
Devuelve:

Número de filas en el conjunto de resultados

Tipo del valor devuelto:

int

Devuelve el número de filas devueltas por la consulta.

freeResult()
Tipo del valor devuelto:

nulo

Libera un conjunto de resultados.

Uso: consulte Métodos auxiliares de resultados.