こんにちは!
ナビゲータのEVEです。
やっと、プログラムを製造できるまで体が復調しました。体というか、頭と言ったらいいでしょうか?最初寝不足かもしれないと話していたのは、そのせいです。ただ、この1週間の観察から風邪だと判断しました。今日のような雨模様の日などをエアコンを使わず、汗を流しながら、デスクに向かっています。
そのかいもあって、やっと復活です。まだ、100%ではないのですが、プログラムを見ても頭痛がするなんてことはなくなりました。20日間以上ですか・・・。この症状・・・。
改めて、健康って大事だなって感じています。
[Prototype EVEの修正状況]
PHP5からPHP8へデータベースへのアクセス方法を変更し、システムへのログインを試みていますが、warningとfatal errorの嵐です。データベースのロジックを変えただけだと思っても、その判定方法とかいろいろ変えているので、以前のロジックが再現できていないようで、悪戦苦闘しています。本日の、PHP5とPHP8との違いによりエラーになった個所は以下の通りです。
//SQL文の作成
❶$sql = "select * from a_table";
//クエリーの取得
❷$row = mysql_query( $p_sql );
//検索結果の判定
❸$r = mysql_error();
//エラーが発生しているかどうか判定
❹if ( $r != "" ) {
//エラーが発生している場合
return "エラーが発生しています。";
}
//検索結果をサーバーサイト変数へ設定します
❺$_SESSION['sb'] = $row['b'];
以上のロジックにおいて、検索結果が0件の場合、PHP5では❺においてエラーになりませんが、❷〜❹のロジックをPHP8に書き換えたうえで実行するとPHP8では❺がエラーになります。まっ、このようなケースの場合、普通エラーにすべきだし、プログラミングにおいて配慮が足りないな〜って感じがします。以上のエラーロジックを本日修正し完了しました。
そして、以前使っていた、session_unregisterがPHP8では利用できなくなりました。そのロジックがあるとエラーが発生します。そのため、unsetに修正しました。変数を削除するという意味では同じかな?ただ、session_unregisterと違いunsetはセッション変数だということを明示的に書かないと通常の変数の値が削除されるので、その辺は注意が必要です。
[あとがき]
以上の修正が終わり、やっと、ログイン後の画面が表示されたのですが、1箇所warningがあります。そう、データベースのunlockの部分・・・。どのサイトでも利用可能といっているので、使い方が悪いのだと思います。unlock以外は、warningとfatal errorがなくなったので、明日は本腰を入れて調査します。進捗は現在2日遅れです。まだ、取り返すことができそうです。
では、また!