find_data
find_data( string $table_name, array $table_schema, string $search_key[, array $columns][, array $order][, int $limit][, int $offset] )
テーブルから条件に該当するデータを探し出します。絞り込み条件に指定されたキーを部分的に含むデータをすべて取得します。
このメソッドは、引数として与えられたテーブルスキーマ情報より、検索キーワードが含まれると想定されるカラムのデータ型を自動選定して最適なデータを照会・取得することができます(内部処理的には自動選定された各カラムへのSELECT文をUNION句で連結したクエリが発行されます)。この場合、テーブル内の全フィールドを検索対象としないため、テーブルスキーマ情報を与えられなかった時よりもパフォーマンスが良いです。
パラメータ
$table_name
$table_schema
$columns
$conditions
LIKE条件による部分一致のみとなり、完全一致での絞り込みはサポートされません。完全一致でのデータ検索には get_data() メソッドを使ってください。定義配列はカラム名がキーで、検索値が値となります。
$order
createdにて降順にソートされてから検索されます。定義配列はカラム名をキーとして、値は降順(DESC)か昇順(ASC)のどちらかです。無効な文字列を指定すると降順となります。
$limit
$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";
list($result, , $table_schema) = $cdbt->get_table_schema($table_name);
if ($result && !empty($table_schema)) {
$data = $cdbt->find_data($table_name, $table_schema, array('account_name'), array('gender'=>'male'));
} else {
$data = $cdbt->find_data($table_name, null, array('account_name'), array('gender'=>'male'));
}
$hits_account_list = [];
foreach ($data as $one_data) {
$hits_account_list[] = $one_data->account_name;
}
printf("Number of account is %d.", count($male_account_list));