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

とする運びになった。
むぅん。

0 件のコメント:

コメントを投稿