こんにちは!
ナビゲータのEVEです。
昨日の検討を受けて、プログラムを修正、試験をしているのですが、ドツボにはまっています。
[今日の確認状況]
何が問題かというと、PDOで接続してできた、インスタンスをサーバーサイト・セッションに設定しそれを各プログラムで使いまわそうとしているのですが、エラーになります。ちなみに、Transaction、Insert、Commit処理を実施後、PDOインスタンスをサーバーサイト変数として再設定するという作業を行えば、とりあえず、Transaction、Insert、Commitの機能は利用することができます。ただ、やはり、エラーが表示されます。
エラーメッセージは、以下の通り・・・。
Fatal error: Uncaught Exception: Serialization of 'PDOStatement' is not allowed in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0
エラーの発生個所は、New Prototype EVEのレコード追加メソッド内のプリシアードステートメントへバインド変数を設定している所で起きているっぽい・・・。ぽいっというのは、細かいレベルまで、トレースが終わっていないためです。
通常のメモリから、サーバーサイト変数、セッション変数に設定するときに何かしらの変換がされているようなのですが、その変換のせいでエラーとなっているということだと思われます。
これが、Warningならまだかわいいのですが、Fatal errorです。無視もできず、現在も対応策を考えています。
[あとがき]
以上のメッセージをうけて、serializeとunserializeメソッドを利用して、上記メッセージを回避しようとしましたが、今のところ解消できていない状況です。いい考えだと思ったのですけれどね・・・。PDOインスタンスをサーバーサイト、セッション変数で共有して各プログラムで利用する方法・・・。
インターネットでは、1件だけ同じ悩みを抱えている人がいましたが、そちらのほうは、PDOインスタンスをサーバーサイトへ設定することがマストではなかったようで、PDOから中身を取り出して、それを、サーバーサイト変数として設定していました。
私は、そのような手法は利用できませんし・・・。やはり、大本から仕様変更しないとだめかもしれません・・・。
もうちょっと、粘ります!
では、また!!!
■PHPのシリアライズを知ろう!便利な使い方徹底解説(SAMURAI ENGINEER Blog)
https://www.sejuku.net/blog/80079
【このカテゴリーの最新記事】