Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从mysql数据库创建动态变量_Php_Mysql - Fatal编程技术网

Php 从mysql数据库创建动态变量

Php 从mysql数据库创建动态变量,php,mysql,Php,Mysql,我有一个数据库,其中包含两种语言的一些按钮和图标的名称。 该表称为icons,它有4个字段(id、abbr、lang1、lang2),其中abbr是我要创建的变量的名称,如果语言设置为lang1,则将单元格lang1分配给变量 表格示例: id abbr lang1 lang2 ----------------------------------------------- 1 air AirConditioner Condiziona

我有一个数据库,其中包含两种语言的一些按钮和图标的名称。 该表称为icons,它有4个字段(id、abbr、lang1、lang2),其中abbr是我要创建的变量的名称,如果语言设置为lang1,则将单元格lang1分配给变量

表格示例:

id    abbr        lang1         lang2
-----------------------------------------------   
1     air    AirConditioner    Condizionatore
2     pool   Pool              Piscina
我知道我可以用这样的东西做到

foreach (array('wifi','fridge','air','balcony','kitchen','tv','bathroom','pool') as $varname) {
 if ($$varname==1) 
{ 
SQL Select to get the information for each field
}
但是我在想,如果我可以动态地这样做会更好,以防我在表中添加额外的行

期望的结果是为每一行自动创建类似的内容

if ($lang==lang1)
{
$air=$row['lang1'];
$pool=$row['lang1'];
}
else
{
$air=$row['lang2'];
$pool=$row['lang2'];
}
我曾经搜索过是否有人遇到过这种情况,但找不到任何对我的情况有用的东西,所以欢迎提供任何帮助


谢谢

我能想到的最简单的动态方式是,您可以查询所需的
abbr
,然后将
$lang
变量作为选择器传递,以选择所需语言的列,具体操作取决于您的代码:

${$row['abbr']}=$row[$lang];

如果我的意思是right
$lang
为1或2,则此代码可能会有所帮助

$language = 'lang'.$lang; // creates lang1 or lang2

$result = mysql_query("SELECT * FROM icons;");
while ($row = mysql_fetch_assoc($result))
{
    $varname = $row['abbr'];
    $$varname = $row[$language];
}

这很好,但是我如何为表中的所有记录创建这些变量呢?我不想指定缩写。。。我希望数据库中的所有abbr都是通过友好方式创建的。逻辑应该是相反的。。。我需要sql查询来提取不同的行,然后如果语言是1或2,则动态创建变量。它甚至在我第一次从url获取$lang时就起作用了。当您使用GET字段时,不要忘记aginst sql注入的保护!在这种情况下,你有什么保护的建议。。。我不太擅长这一点,如果你只使用代码,这是不必要的,但如果没有这种保护,你的数据库在互联网上是脆弱的。包括整个数据库。为了避免未经授权的操作,必须在查询之前转义字符串。您可以在此处找到更多信息: