将变量存储为数据库中的变量

时间:2013-05-14 07:13:01

标签: php sql

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

例如几个月

我有id | month estructure

的表“月” 用户表中的

我有id | username | month_id

我的猜测(糟糕的猜测)它可以保存例如$ january直接在数据库上,所以在php调用时,它会查找已定义的变量。

$ january =“january”;如果我在西班牙语网上然后我改为$ january =“Enero”;

但这不起作用(很明显,因为它打印的是一个调用$ 1月的结果,它在数据库中保存为$ 1)

我试图做什么的最佳方法怎么做...导致我在这一点上丢失..我需要在数据库中使用这种结构,原因很多我现在不提,

谢谢!

我的代码

$row2['months']

打印此$january

即使在php代码中我设置了$ january =“enero”;

3 个答案:

答案 0 :(得分:4)

您可能会重新考虑您的策略。

示例:

对于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')以及数据库中的引用就足够了。几个月来,你可以将它们与$ msgs区分开来,因为它们的使用是特定的,数字索引为它们的情况编码增加了更多的一致性。

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

答案 1 :(得分:1)

您应该保存用户区域设置,例如在您的表格中en_US,并根据默认语言对该值进行进一步翻译。

答案 2 :(得分:-1)

要让php评估该变量,您需要做的是eval:

$january='Enero';
$row='$january';

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

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