get_data
get_data( string $table_name[, mixed $columns][, array $conditions][, array $order][, int $limit][, int $offset] )
テーブルから条件に該当するデータを取得します。絞り込み条件と一致したデータのみが取得されます。
パラメータ
$table_name
文字列としてデータを取得したいテーブル名 table_name を指定します。
$columns
検索対象となるカラム名の配列を指定します。この引数はSQLにおけるSELECT句となります。指定しなかった場合は全てのカラムを対象とするワイルドカードの文字列 “*” が指定されます。テーブル内のデータ数をカウントする時などは ”COUNT(*)” を指定します。
$conditions
検索対象となるデータの絞り込み条件の配列を指定します。この引数はSQLにおけるWHERE句となります。指定しなかった場合は絞り込みは行われません。また
LIKE条件による部分一致はできず、完全一致での絞り込みのみをサポートしています。定義配列はカラム名がキーで、検索値が値となります。
$order
検索対象データのソート順の配列を指定します。この引数はSQLにおけるORDER BY句となります。指定しなかった場合、検索対象データは登録日時のカラム
createdにて降順にソートされてから検索されます。定義配列はカラム名をキーとして、値は降順(DESC)か昇順(ASC)のどちらかです。無効な文字列を指定すると降順となります。
$limit
検索対象データの最大取得行数を数値で指定します。検索対象データは conditions の条件で絞り込まれ、 order でソートされたデータとなります。この引数はSQLにおけるLIMIT句と同じ意味を持ちますが、開始位置と取得数を同時に指定することはできません(開始位置を指定する場合は後述の offset を使います)。また、0は指定できません。
$offset
検索対象データの取得開始行を数値で指定します。検索対象データは conditions の条件で絞り込まれ、 order でソートされたデータとなります。この引数はSQLにおけるOFFSET句と同じです。
返り値
array( [object(stdClass), ] )
テーブル検索結果のオブジェクト配列を返します。
変更履歴
| バージョン | 内容 |
|---|---|
| 1.0.0 | – |
| 1.1.5 | order パラメータのデフォルト値処理を変更。 NULL を指定することでORDER BY句を生成しないようにした |
| 1.1.9 | order パラメータに指定されたカラム名がテーブル内に存在しない場合、ORDER BY句を生成しないようにした |
使用例
テーブル内の全データ数をカウントする
<?php
global $cdbt;
$table_name = "prefix_tablename";
$result = $cdbt->get_data($table_name, 'count(*)');
$result = get_object_vars($result[0]);
if (is_array($result)) {
printf("The %s.tbl has total %d data.", $table_name, intval($result['count(*)']));
}
テーブル内の条件に一致する行(レコード)の特定カラムのデータのみを取得する
<?php
global $cdbt;
$table_name = "prefix_tablename";
$result = $cdbt->get_data($table_name, array('account_name'), array('gender'=>'male'));
$male_account_list = [];
foreach ($result as $data) {
$male_account_list[] = $data->account_name;
}
printf("Number of male account is %d.", count($male_account_list));
テーブル内を特定カラムの値でソートし、条件に一致する行(レコード)から開始位置と取得数を指定してデータを取得する
<?php
global $cdbt;
$table_name = "prefix_tablename";
$result = $cdbt->get_data($table_name, '', array('gender'=>'male'), array('ID'=>'ASC'), 20, 20);
foreach ($result as $data) {
printf("ID: %d, AccountName: %s, Gender: %s<br>n", $data->ID, $data->account_name, $data->gender);
}