[PHP-users 12674] Re: SQL queryを外部ファイルより取得する方法
shogo
php-users@php.gr.jp
Mon, 20 Jan 2003 18:14:03 +0900
河瀬です。
こんなカンジでどうでしょう?
function external_query_set($file_path)
{
// 外部クエリーの読み込み
$external_query = implode(' ', file($file_path));
if (!$external_query){
print "file 読込みエラー\n file_path={$file_path}\n";
return FALSE;
}
// 置換キー("{$XXXX}"形式の文言)の抽出
$match_count=preg_match_all('/\{\$([^}])+\}/', $external_query, $row);
if ($match_count==0){
echo "置換キーなし\n";
return FALSE;
}
$row = array_unique($row[1]);
foreach ($row as $match) {
if (!preg_match('/^[A-Z_][A-Z0-9_]*$/i', $match) {
echo "置換キーが変数名として正しくない。\n";
return FALSE;
} elseif (!isset($GLOBALS[$match])) {
echo "変数($rep_key)が定義されていない。\n";
return FALSE;
}
$external_query = str_replace("{\$$match}", $GLOBALS[$match], $external_query);
}
return $external_query;
}
// 自分は同様の処理に自作のテキストテンプレートエンジン使ってますが・・・
sawai@rk9.so-net.ne.jp さんは書きました:
>澤井といいます。
>
>SQL queryを外部ファイルより取得するソースを作成しています。
> 処理の内容としては、
> 1.queryを外部ファイルとして定義する(xxxx.sql)
> (queryの可変部の記述を、{$XXXX}形式で記述する)
>
> queryの例
> ---------------------------------
> select * from test_master
> where host_id="{$host_id}"
> and class_id="{$class_id}" #可変部分を{$XXXX}形式で定義する。
> and class_val={$class_val}
> -----------------------------------
>
> 2.phpよりユーザ関数を呼び出し、可変部分が置換された結果を戻り値とする。
>
>