logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

Drupal 7 でのデータベース操作 - レッスン 7 - クエリ結果の処理(fetch)

17/04/2025, by Ivan

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();
?>