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

Meh*_*nya -5 php mysql

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

+---------+-------------+
| id      | value       |
+---------+-------------+
|       1 | title       |
|       2 | description |
|       3 | email       |
|       4 | keywords    |
+---------+-------------+
Run Code Online (Sandbox Code Playgroud)

如何选择它们并将它们分配给变量($ 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'];
}
Run Code Online (Sandbox Code Playgroud)

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

更新:

如果您现在正在阅读此问题,请不要使用此结构来存储您的设置,在答案中使用Yellow Bird建议的那个.

Nug*_*get 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);
Run Code Online (Sandbox Code Playgroud)

正如DanFromGermany在评论中注意到的那样,您的数据库结构可能没有以正确的方式完成.你应该有这样的设计:

+---------+-------------+--------------+
| id      | key         | value        |
+---------+-------------+--------------+
|       1 | title       | title value  |
|       2 | description | desc value   |
|       3 | email       | email value  |
|       4 | keywords    | keyw value   |
+---------+-------------+--------------|
Run Code Online (Sandbox Code Playgroud)

然后,您的代码将如下所示:

$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'];
    }
}
Run Code Online (Sandbox Code Playgroud)