从表中获取数据并存储在变量中

时间:2014-02-27 16:26:58

标签: php mysql

我将网站设置存储在如下表格中:

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

如何选择它们并将它们分配给变量($ title,$ desc,$ email,$ 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'];
}

但它只获得第一行'标题',任何想法如何做或更好的方法来保存设置。

更新

如果您现在正在阅读此问题,请不要使用此结构来存储您的设置,请使用黄鸟建议的答案。

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'];
    }
}