Jak sprawdzić, czy zapytanie do bazy danych ma wyniki?

11

Jak sprawdzić, czy poniższy kod ma wyniki?

Próbowałem pustej funkcji, ale zawsze zwraca FALSE


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

hpn
źródło

Odpowiedzi:

14

Jeśli jestem poprawny, wynikiem wywołania metody execute () powinien być obiekt DatabaseStatementInterface z funkcją rowCount .

Jensen
źródło
1
Rzeczywiście, poniżej podano liczbę wyników:var_dump($result->rowCount());
pfrenssen
1

Jeśli wydrukujesz var_dump($result);, zobaczysz, że $resultzawiera zapytanie i inne zmienne, więc nigdy nie jest puste.
Możesz umieścić $resultw foreachpętli, aby zobaczyć wyniki.

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

Wewnątrz foreachpętli możesz wydrukować wyniki za pomocą tego kodu.

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

Jeśli jako wynik istnieje tylko jeden rekord, użyj go mysql_fetch_array()do obsługi rekordu.

JurgenR
źródło
Masz literówkę. To powinno byćforeach ($result as $record) { var_dump($record); }
vanz
W przypadku Drupala zła porada sugeruje użycie funkcji MySQL. Witryna może używać PosgreSQL, SQLite lub innego silnika bazy danych, z którym Drupal jest kompatybilny. Funkcje bazy danych Drupal nie wymagają modułu do znajomości silnika bazy danych używanego z boku.
kiamlaluno
0

Spróbuj tego

while($record = $result->fetchAssoc()) {
print_r($record);
}
Ahmad
źródło