先の記事でも書いているようにfunction構造を基本にプログラムを書き出した。
ここで、functionの中と外で変数が使えないので、そのスクリプト内独自のfunction部分に関しては、
すべて次のように記述するようにした。
// 呼び出し元
$message = get_record($message);
// エラーメッセージがなければ表示
if(count($message["fatal"]) == 0){
$message = disp_result($message);
}
// エラーメッセージがあるならエラー表示
else{
$message = disp_error($message);
}
exit_operation($message);
// 独自function
function get_record(&$message){
$message["debug.print"]["process"] = "レコードの取得処理開始!";
// プログラムつらつらと
// エラー処理とか
if($getdatamiss){
$message["fatal"]["get_record"] = "致命的なエラー発生";
}
else{
$message["result"]["get_record"] = "正常に処理を完了";
}
// 中で通知したものを返す
return $message;
} // function END
みたいな感じで、$messageを常に投げて投げ返してやっていく形をとってみた。
さぁどうなることやら。
動画投稿やらプログラム関係メモ mysql php4 servers platform 投稿内容に関する削除依頼等がありましたら、abonded@gmail.comまでご連絡ください。
2008/04/27
PHPで取得したMYSQLのresultの扱い
今までfunctionすらちゃんと使っていなかったので、
各機能をすべてfunction化して行くと中々面倒な事が起こってくる。
functionが無いと、後々面倒なのは差し置いて、すべての変数がglobal扱いで、
どこからでも参照できるが、function外で宣言された変数を利用する場合は、
引数として渡すか、global関数で取り込まないといけない。
そんな単純な事をしていると、function内で取得したmysql_queryの結果変数を、
そのまま引数の$messageに渡す、つまり次のような事をすると、
$result = mysql_query($query);
$message["record"] = mysql_fetch_assoc($result);
この$message["record"]には$resultのmysqlポインタが渡されただけのようで、
この後に次の行為を行うと、return $messageをしても、mysqlデータベースの値を
取得できなくなってしまう。
mysql_free_result($result);
イメージ的にはassocをしてレコードの内容を取得したので、その行レコードだけもって
帰れると思っていたが、assocで帰ってくるのもポインタだという事で。
結局、忘れないように、
// 開放すると取得できなくなる!
// mysql_free_result($result);
とする運びになった。
むぅん。
各機能をすべてfunction化して行くと中々面倒な事が起こってくる。
functionが無いと、後々面倒なのは差し置いて、すべての変数がglobal扱いで、
どこからでも参照できるが、function外で宣言された変数を利用する場合は、
引数として渡すか、global関数で取り込まないといけない。
そんな単純な事をしていると、function内で取得したmysql_queryの結果変数を、
そのまま引数の$messageに渡す、つまり次のような事をすると、
$result = mysql_query($query);
$message["record"] = mysql_fetch_assoc($result);
この$message["record"]には$resultのmysqlポインタが渡されただけのようで、
この後に次の行為を行うと、return $messageをしても、mysqlデータベースの値を
取得できなくなってしまう。
mysql_free_result($result);
イメージ的にはassocをしてレコードの内容を取得したので、その行レコードだけもって
帰れると思っていたが、assocで帰ってくるのもポインタだという事で。
結局、忘れないように、
// 開放すると取得できなくなる!
// mysql_free_result($result);
とする運びになった。
むぅん。
登録:
投稿 (Atom)