PHP:如何在会话变量中存储动态变量?

时间:2016-07-21 22:43:47

标签: php

这是我正在尝试做的事情:

$username = 'john';
$_SESSION['data'] = "Hello ".$username;


$username = 'mike';
$new = $_SESSION['data']; // trying make it like: $new = "Hello ".$username;
echo $new // should output: "Hello Mike"

我正在尝试将带有动态变量的短语保存到$ _SESSION变量中,因此以后可以根据动态变量在不同页面上更改短语。

这可能吗,怎么办呢?

4 个答案:

答案 0 :(得分:0)

它将无法按照您编写的方式工作,因为您在会话中存储的值是使用$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之前准备好将值绑定到下一页时。

答案 1 :(得分:0)

您可以使用string formatting。看看:

$username = 'John'; // not really needed for this test
$_SESSION['data'] = "Hello %s";


$username = 'Mike';
$text = sprintf($_SESSION['data'], $username);
echo $text

输出:

  

你好迈克

请参阅操作中的代码here

答案 2 :(得分:0)

如果要在会话数组中添加新元素,则可以按如下方式在会话数组中推送新元素:

array_push($_SESSION['data'],$element)

答案 3 :(得分:-2)

你可以这样做:

$username = 'john';
$_SESSION['data'] = 'echo "Hello $username";';


$username = 'mike';
eval($_SESSION['data']);

但我不知道你为什么要这样,有数以百万计的方法可以达到你想要的效果,这样的方法可能不是最好的。