2014-02-27 145 views
-1

我已存儲在一個表中的網站設置是這樣的:獲取數據,並存儲在變量

+---------+-------------+ 
| id  | value  | 
+---------+-------------+ 
|  1 | title  | 
|  2 | description | 
|  3 | email  | 
|  4 | keywords | 
+---------+-------------+ 

如何選擇它們,並將它們分配給變量($標題,$遞減,$電子郵件, $ key)

// Get Website Infos 
$result=$db->query("SELECT `value` FROM `settings`"); 
if($result->num_rows >= 1){ 
    $row=$result->fetch_assoc(); 

    $otitle=$row['value']; 
    $odescription=$row['value']; 
    $oemail=$row['value']; 
    $okeywords=$row['value']; 
} 

但它只獲得第一行「標題」,任何想法如何做或更好的方式來保存設置。

UPDATE:

如果你正在閱讀這個問題,不要使用此結構來存儲您的設置,使用一個的答案被黃鳥建議。

+1

'的foreach()'可能? – AbraCadaver

+1

循環結果 –

+0

使用註釋來詢問更多信息或提出改進建議。請避免在評論中回答問題。 –

回答

5

你必須循環與fetch_assoc()方法:

$result = $db->query("SELECT `value` FROM `settings`"); 

if ($result->num_rows >= 1){ 

    $data = array(); 
    while ($row = $result->fetch_assoc()) { 
     $data[] = $row['value']; 
    } 
} 

var_dump($data); 

由於DanFromGermany在評論中發現,你的數據庫結構很可能沒有做正確的方式。你應該有這樣的設計:

+---------+-------------+--------------+ 
| id  | key   | value  | 
+---------+-------------+--------------+ 
|  1 | title  | title value | 
|  2 | description | desc value | 
|  3 | email  | email value | 
|  4 | keywords | keyw value | 
+---------+-------------+--------------| 

然後,你的代碼應該是這樣的:

$result = $db->query("SELECT key, value FROM `settings`"); 

if ($result->num_rows >= 1) { 
    $data = array(); 

    while ($row = $result->fetch_assoc()) { 
     $data[$row['key']] = $row['value']; 
    } 
} 
+0

整個概念是失敗的,你怎麼知道哪些數據是什麼樣的設置沒有鍵? – DanFromGermany

+0

@DanFromGermany嗯,我沒有說他的數據庫結構是正確的。我只是告訴他爲什麼他只獲得一個價值。我編輯給他看一個建造他的桌子的不同方式。 –

相關問題