Comment vérifier si une requête de base de données a des résultats?

11

Comment vérifier si le code suivant a des résultats?

J'ai essayé la fonction vide mais elle renvoie toujours FAUX


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

hpn
la source

Réponses:

14

Si j'ai raison, le résultat de l'appel execute () devrait être un DatabaseStatementInterface qui a une fonction rowCount .

Jensen
la source
1
En effet, ce qui suit donne le nombre de résultats:var_dump($result->rowCount());
pfrenssen
1

Si vous imprimez, var_dump($result);vous verrez qu'il $resultcontient la requête et d'autres variables afin qu'il ne soit jamais vide.
Vous pouvez mettre $resulten foreachboucle pour voir les résultats.

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

À l'intérieur de la foreachboucle, vous pouvez imprimer les résultats avec ce code.

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

S'il n'y a qu'un seul enregistrement comme résultat, utilisez-le mysql_fetch_array()pour gérer l'enregistrement.

JurgenR
la source
Vous avez une faute de frappe. Cela devrait êtreforeach ($result as $record) { var_dump($record); }
vanz
Avec Drupal, c'est un mauvais conseil de suggérer d'utiliser une fonction MySQL. Le site pourrait utiliser PosgreSQL, SQLite ou un autre moteur de base de données avec lequel Drupal est compatible. Les fonctions de base de données Drupal ne nécessitent pas de module pour connaître le moteur de base de données utilisé de côté.
kiamlaluno
0

Essaye ça

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