Сохранить переменную как переменную в MYSQL для последующего использования

У меня есть шаблон электронной почты, который я сохраняю в базе данных. Моя проблема заключается в том, что часть сообщения является переменной, так как эти данные поступают из текущих пользовательских данных. Например, для моего шаблона

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

здесь $username и $email поступают от текущих пользователей и варьируются от пользователя к пользователю. Таким образом, проблема заключается в том, как сохранить его в базе данных, поэтому я могу использовать его как переменную на странице php позже. у кого-нибудь есть идея, пожалуйста, помогите мне. Ваша помощь будет оценена по достоинству.

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 . '.';


Вы можете использовать что-то вроде этого:

$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;


Переменные в строке не будут автоматически вычисляться как переменные только потому, что вы добавляете их в область php. Вы должны оценить строку, чтобы переменные были заменены:

$username = 'test';
$email = '[removed_email]';
$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 [removed_email].

Для получения дополнительной информации см. Http://php.net/manual/en/function.eval.php

licensed under cc by-sa 3.0 with attribution.