セッションに保存した値が$username
変数の値を使用して完全に新しい値になっているため、書いたとおりに動作しません。作成されるとすぐに、セッションの値は$username
変数に関連付けられていません。
セッションに名前とフレーズを別々に保存することができます。名前とフレーズを別々に変更してから、それらを一緒に使用する必要があるときに後で組み合わせることができます。
コメントの特定のケースについては、プレースホルダを使用して準備されたステートメントのSQL文字列を格納することが有効です。
$_SESSION['statement'] = "SELECT some_columns FROM some_table LIMIT ?, ?";
$_SESSION['limit'] = $limit;
$_SESSION['offset'] = $offset;
あなたは準備された文自体を保存することはできませんが、SQL文字列を格納することができ、その後、後続のページにそれを準備して実行します。
$stmt = $pdo->prepare($_SESSION['statement']);
$stmt->execute([ $_SESSION['limit'], $_SESSION['offset'] ]);
はちょうどあなたがyou need to specify that they should be bound as integers or disable emulated prepared statementsこと、それを実行する前に、あなたの次のページにに値をバインドする準備ができたら、覚えています。
あなたは(幸い) – zerkms
はこれを解決することは容易ではありません、と私それを行うことはできませんここであなたが抱いているよりも別の問題を解決しようとしているという明確な印象を受けています(iow、[XY問題](http://xyproblem.info/))。いずれにしても、ソリューションはおそらく '$ _SESSION ['data']'に文字列テンプレートを格納し、関連するすべての変数をテンプレートエンジンに渡します。繰り返しますが、まったく簡単なことではありませんが、本当にあなたが提起した正確な問題を解決する他の方法はありません。それで、あなたが解決しようとしている問題は何ですか? –
私は大量かつ精巧な$ _POST変数とSQL構築計算から作成されたSessionにSQL文を保存しようとしています。ユーザーが「ページ2」をクリックすると、精巧なスクリプトを実行するのではなく、50種類の$ _POST変数をセッション変数に保存するのではなく、SQL文の「Offet、Limit」部分を変更するだけです。 – peppy