2014-02-27 116 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嗯,我没有说他的数据库结构是正确的。我只是告诉他为什么他只获得一个价值。我编辑给他看一个建造他的桌子的不同方式。 –

相关问题