Scroll
Drupal 7 でのデータベース操作 - レッスン 7 - クエリ結果の処理(fetch)
SELECT クエリは、常にゼロ行以上を含む結果を返します。クエリ結果を処理する方法はいくつかあり、ニーズに最も合ったものを選べます。
最も一般的な方法は、foreach() ループを使うことです:
nid);
}
?>
結果セットで何をする必要があるかに応じて、レコードを取得する他のメソッドを使えます。次のレコードを明示的に取得するには、次を使います:
fetch(); // Default fetch (as object).
$record = $result->fetchObject(); // Fetch as object.
$record = $result->fetchAssoc(); // Fetch as associative array.
?>
これ以上レコードがない場合、これらのメソッドは FALSE を返します。期待する結果の形式を明確にするために、fetch() ではなく fetchObject() または fetchAssoc() を使うことをお勧めします。1 つの行から単一のフィールドを取得するには:
fetchField($column_index);
?>
$column_index のデフォルト値は 0 です。結果セットの行数を数えるには:
rowCount();
?>
すべての行を配列に取得するには:
fetchAll();
// Fetch result as associative array using a specific field as the key.
$result->fetchAllAssoc($field);
// Fetch a key-value array: column 1 => column 2
$result->fetchAllKeyed();
$result->fetchAllKeyed(0, 2); // array will be column 0 => column 2
$result->fetchAllKeyed(1, 0); // array will be column 1 => column 0
// Fetch a single column as an array.
$result->fetchCol();
// Count values from a specific column (default is the first).
$result->fetchCol($column_index);
?>
fetchAll() と fetchAllAssoc() は、現在の fetch モードの設定を使うことに注意してください。新しい fetch モード定数を渡すことで、fetch モードを変更できます。fetchAll() の場合は最初のパラメーター、fetchAllAssoc() の場合は 2 番目のパラメーターです。
PHP はメソッドチェーンをサポートしているため、結果を変数に代入するのを省略できます:
title
$nodes = db_query("SELECT nid, title FROM {node}")->fetchAllKeyed();
// Get a single record from the database
$node = db_query("SELECT * FROM {node} WHERE nid = :nid", array(':nid' => $nid))->fetchObject();
// Get a single value from the database
$title = db_query("SELECT title FROM {node} WHERE nid = :nid", array(':nid' => $nid))->fetchField();
?>