2016-11-16 94 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(); 
}