2016-11-16 90 views
0

我在我的数据库中创建了一个设置表,我想根据设置为变量赋值,我不知道如何去做。从数组中分配变量

表:设置

id | setting  | value 
1 | setting_one | value_one 
2 | setting_two | value_two 
3 | setting_three | value_three 

查询

if ($result = $db->query("SELECT * FROM settings")) { 
    while($row = mysqli_fetch_assoc($result)) { 
     $SettingOne = $row['setting_one']; 
     $SettingTwo = $row['setting_two']; 
     $SettingThree = $row['setting_three']; 
    } 
} 
+1

是否有理由将它们设置为单个变量?你可以随身携带数组并通过键访问它们。 – nerdlyist

+0

执行'$ {$ row ['setting']} = $ row ['value'];'得到像'$ setting_one ='value_one'的设置;' – JustOnUnderMillions

+0

但是您应该直接使用数组,而不是创建新变量 – JustOnUnderMillions

回答

0

的选择将返回3行,假设你的表中,这就是为什么你处理结果的同时 只有3行垂耳。

每个$row将包含您在查询中选择的列形式的Assoc数组。

在这种情况下,你使用SELECT *$row数组包含3个occurances

id, setting, value 

所以,你的循环应该像

if ($result = $db->query("SELECT * FROM settings")) { 
    while($row = mysqli_fetch_assoc($result)) { 
     $id  = $row['id']; 
     $setting = $row['setting']; 
     $value = $row['value']; 

     echo "The id = $id, the setting = $setting, the value is $value <br>"; 
    } 
} 

这将产生你3线输出的,只有假设你在你的表格中有3行

+0

好吧,现在让我们说我现在有两个设置。 id = 1,setting = setting_timezone,value = America/New_York id = 2,setting = setting_static_ip,value = false 如何将设置的值分配给变量? $ SettingTimezone = setting_timezone $ SettingStaticIP = setting_static_ip – Robert

0

我明白了,只是回显行['设置']为每个设置$)

if ($result = $db->query("SELECT * FROM settings")) { 
    while($row = mysqli_fetch_assoc($result)) { 
     $key = $row['setting']; 
     $$key = $row['value']; 
    } 
$result->free(); 
$result->close(); 
}