¿Cómo verificar si una consulta de base de datos tiene resultados?

11

¿Cómo verifico si el siguiente código tiene resultados?

Intenté la función vacía pero siempre devuelve FALSE


$query = db_select('my_table', 't');
$query->condition('code', 10)
      ->fields('t', array('cid'));
$result = $query->execute();

hpn
fuente

Respuestas:

14

Si estoy en lo correcto, el resultado de la llamada execute () debería ser una DatabaseStatementInterface que tiene una función rowCount .

Jensen
fuente
1
De hecho, lo siguiente da el número de resultados:var_dump($result->rowCount());
pfrenssen
1

Si imprime var_dump($result);, verá que $resultcontiene la consulta y otras variables para que nunca esté vacía.
Puedes poner $resultun foreachbucle para ver los resultados.

foreach ($result as $record) {
  var_dump($record);
}

Dentro del foreachbucle, puede imprimir los resultados con este código.

foreach ($result as $record) {
  print $record->nid;
  print $record->title;
}

Si solo hay un registro como resultado, utilícelo mysql_fetch_array()para manejar el registro.

JurgenR
fuente
Tienes un error tipográfico. Esto debería serforeach ($result as $record) { var_dump($record); }
vanz
Con Drupal, es un mal consejo sugerir el uso de una función MySQL. El sitio podría estar utilizando PosgreSQL, SQLite u otro motor de base de datos con el que Drupal sea compatible. Las funciones de la base de datos de Drupal no requieren un módulo para conocer el motor de la base de datos que se utiliza desde un lado.
kiamlaluno
0

Prueba esto

while($record = $result->fetchAssoc()) {
print_r($record);
}
Ahmad
fuente