Как проверить, есть ли у запроса к базе данных результаты?

11

Как проверить, имеет ли следующий код результаты?

Я пробовал пустую функцию, но она всегда возвращает FALSE


$query = db_select('my_table', 't');
$query->condition('code', 10)
      ->fields('t', array('cid'));
$result = $query->execute();
ХПН
источник

Ответы:

14

Если я прав, результатом вызова execute () должен быть объект DatabaseStatementInterface, в котором есть функция rowCount .

Jensen
источник
1
Действительно, следующее дает количество результатов:var_dump($result->rowCount());
pfrenssen
1

Если вы напечатаете, var_dump($result);вы увидите, что $resultсодержит запрос и другие переменные, поэтому он никогда не будет пустым.
Вы можете поместить $resultв foreachпетлю , чтобы увидеть результаты.

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

Внутри foreachцикла вы можете распечатать результаты с помощью этого кода.

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

Если в качестве результата есть только одна запись, используйте ее mysql_fetch_array()для обработки.

JurgenR
источник
У вас есть опечатка. Это должно бытьforeach ($result as $record) { var_dump($record); }
vanz
С Drupal плохой совет предлагать использовать функцию MySQL. Сайт может использовать PosgreSQL, SQLite или другой движок базы данных, с которым совместим Drupal. Функции базы данных Drupal не требуют, чтобы модуль знал механизм базы данных, используемый со стороны.
kiamlaluno
0

Попробуй это

while($record = $result->fetchAssoc()) {
print_r($record);
}
Ahmad
источник