logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll
18/06/2025, by Ivan

Una consulta Select siempre devolverá un objeto conjunto de resultados que contiene cero o más registros. Hay varias maneras de obtener datos de este conjunto de resultados dependiendo del caso de uso. Por defecto, los registros se extraen como objetos, a menos que cambie el modo de extracción (ver: setFetchMode).

El caso más común es iterar sobre el conjunto de resultados usando un ciclo foreach().

// Consulta estática:
$result = $connection->query("SELECT field1, field2 FROM {mytable}");
foreach ($result as $record) {
  // Hacer algo con cada $record
}

// Consulta dinámica
$result = $query->execute();
foreach ($result as $record) {
  // Hacer algo con cada $record.
}

Sin embargo, dependiendo del uso que se le dé a los resultados, existen varias otras formas de obtener registros.

Para obtener explícitamente el siguiente registro, use:

$record = $result->fetch();            // Usa el modo de extracción por defecto.
$record = $result->fetchObject();  // Extrae como un objeto stdClass.
$record = $result->fetchAssoc();   // Extrae como un arreglo asociativo.

Si no hay un siguiente registro, se devuelve FALSE. Normalmente se recomienda evitar fetch() en favor de fetchObject() y fetchAssoc(), ya que estos últimos son más autodescriptivos. Si necesita usar cualquier otro modo de extracción soportado por PDO, use fetch().

Para obtener solo un campo del conjunto de resultados, use:

$record = $result->fetchField($column_index);

El valor por defecto de $column_index es 0, es decir, el primer campo.

Para contar la cantidad de filas afectadas por una sentencia DELETE, INSERT o UPDATE, use:

$number_of_rows = $result->rowCount();

Para contar la cantidad de filas devueltas por una sentencia SELECT, use:

$number_of_rows = $connection->select('mytable')->countQuery()->execute()->fetchField();

Para extraer todos los registros de una vez en un solo arreglo, use uno de los siguientes:

// Recuperar todos los registros en un arreglo indexado de objetos stdClass.
$result->fetchAll();

// Recuperar todos los registros en un arreglo asociativo con claves del campo especificado.
$result->fetchAllAssoc($field);

// Recuperar un conjunto de resultados de 2 columnas como un arreglo asociativo campo0 => campo1.
$result->fetchAllKeyed();
// También puede especificar qué dos campos usar indicando sus números de columna
$result->fetchAllKeyed(0,2); // sería campo 0 => campo 2
$result->fetchAllKeyed(1,0); // sería campo 1 => campo 0
// Si necesita un arreglo donde las claves y valores contienen el mismo campo (por ejemplo, para crear un elemento de formulario 'checkboxes'), el siguiente método es perfectamente válido:
$result->fetchAllKeyed(0,0); // sería campo 0 => campo 0, por ejemplo [article] => [article]

// Recuperar un conjunto de resultados de 1 columna como un arreglo simple.
$result->fetchCol();
// Se puede especificar el número de columna, si no se especifica, por defecto es la primera columna
$result->fetchCol($column_index);

Tenga en cuenta que fetchAll() y fetchAllAssoc() por defecto extraerán usando cualquier modo de extracción establecido en la consulta (arreglo numérico, arreglo asociativo u objeto). Esto puede cambiarse pasando una nueva constante de modo de extracción. Para fetchAll() es el primer parámetro. Para fetchAllAssoc() es el segundo parámetro. Ejemplos:

// Obtener un arreglo de arreglos con claves basadas en el campo 'id'.
$result->fetchAllAssoc('id', PDO::FETCH_ASSOC);
// Obtener un arreglo de arreglos con claves numéricas y asociativas.
$result->fetchAll(PDO::FETCH_BOTH);

Dado que PHP soporta llamadas en cadena de métodos sobre objetos retornados, a menudo la variable $result se omite completamente, por ejemplo:

// Obtener un arreglo asociativo de ids a títulos.
$examples = $connection->query("SELECT id, title FROM {mytable}")->fetchAllKeyed();

// Obtener un solo registro de la base de datos.
$myobj = $connection->query("SELECT * FROM {mytable} WHERE example = :example", [':example' => $example])->fetchObject();

// Obtener un solo valor de la base de datos.
$myval = $connection->query("SELECT example FROM {mytable} WHERE id = :id", [':id' => $id])->fetchField();

Si necesita un arreglo simple como [1, 2, 3, 4, 5], tendrá que conformarse con algo más parecido a [1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5]. Puede obtener esto con:

$ids = $connection->query("SELECT id FROM {example}")->fetchAllKeyed(0,0);

 

Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.