将变量保存为MYSQL中的变量供以后使用

时间:2014-09-12 12:41:40

标签: php mysql

我有一个我保存在数据库中的电子邮件模板。我的问题是消息的某些部分是可变的,意味着这些数据来自当前的用户数据。 例如,我的模板是

$message="This is test for $username. I am sending mail to $email."

此处$username$email来自当前用户,并且因用户而异。 所以问题是如何将它保存在数据库中,以便我以后可以在php页面上将其用作变量。 任何人有任何想法请帮助我。您的帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

如果您确实需要将整个模板存储在数据库中,可以使用自己创建的常量保存它,例如[USERNAME],[EMAIL]然后在php脚本中使用 str_replace()

$messageTemplate = 'This is test for [USERNAME]. I am sending mail to [EMAIL].';
$message = str_replace(array('[USERNAME]', '[EMAIL]'), array($username, $email), $messageTemplate);

但您也可以将此字符串分开,并将其与数据库中的变量连接起来,如下所示:

$message = 'This is test for ' . $username . '. I am sending mail to ' . $email . '.';

答案 1 :(得分:2)

您可以使用以下内容:

$input = "This is test for {username}. I am sending mail to {email}.";

$tokens = array("username" => $username, "email" => $email);

$tmp = $input;
foreach($tokens as $key => $token)
{
    $tmp = str_replace("{".$key."}", $token, $tmp);
}
echo $tmp;

答案 2 :(得分:1)

字符串中的变量不会自动计算为变量,因为您要将其添加到php范围中。您需要对字符串进行评估才能替换变量:

$username = 'test';
$email = 'test@test.com';
$str = "This is a test for $username. I am sending mail to some person $email.";

echo $str. "\n";
// This is a test for $username. I am sending mail to some person $email.
eval("\$str = \"$str\";");
echo $str. "\n";
// This is a test for test. I am sending mail to some person test@test.com.

有关详细信息,请参阅http://php.net/manual/en/function.eval.php