将变量作为变量存储在数据库中


Store a variable as variable in database

你好,我正在用php构建一个multilenguaje应用程序,这是我第一次处理multilenguaje,我试图这样做。

以月为例

我有一个表"月"与id | month结构

在users表中我有id | username | month_id

我的猜测(错误的猜测)是,我可以保存例如$january直接在数据库上,所以在PHP中,当它被调用时,它寻找定义的变量。

$january = "一月";如果我在西班牙语网站上,我把这个改成$january = "Enero";

,但这不起作用(显然是因为它作为调用$january的结果打印,它在数据库中保存为$january)

对于我想做的事情,最好的方法是什么?因为我迷失在这一点上…我在数据库中需要这个结构有很多原因,我现在就不提了,

谢谢!

My code

This $row2['months']

打印此$january

即使在php代码中我已经设置了$january = "enero";

你应该重新考虑你的策略。

的例子:

对于10种语言,如果您保留10个php文件来定义月份名称或实际上所有语言区域设置单词,这将是足够的,您可以在不干扰数据库的情况下包含它们。

<?php
 // this is words_en.php, you can make another like words_de.php etc.
 $months = array('january','february','march','april'....etc );
?>

如果您的语言环境文件结构一致,例如:

 $msgs = array(
    'MSG1'=>'first message',...
 }

在代码和数据库中只保留引用(如' msg1 ')就足够了。在这几个月里,您可以将它们与$msg分开,因为它们的用途是特定的,并且数字索引为它们的情况增加了编码的一致性。

注意,这不是语言区域设置的唯一方法,但这是一个易于维护的版本。

您应该在表中保存用户的语言环境,例如en_US,并在此值的基础上进行进一步的翻译,并返回到默认语言

要让php计算该变量,您需要做的是eval:

$january='Enero';
$row='$january';
echo $row;                     //Prints $january
echo PHP_EOL;
echo eval("return ".$row.";"); //Prints Enero

这是在ideOne: http://ideone.com/f0LCT0