从数据库中获取特定密钥

时间:2013-09-11 15:21:00

标签: php mysql loops

我正在尝试从数据库中获取一些特定的键和值。我的数据库条目如下所示:

id | name | description      | value
------------------------------------------
1  | lang | default language | en
2  | date | date format      | YYYY-MM-DD

我想仅回显我的namevalue字段。我尝试过使用嵌套的foreach循环,如下所示:

foreach($details as $key => $value)
{
    foreach($value as $index => $row)
    {
        echo $index . " / " . $row . "<br />";
    }
    echo "<br />";
}

但那只是回声:

id / 1
name / lang
description / default language
value / en

id / 2
name / date
description / date format
value / YYYY-MM-DD

但是,当我添加偏移时,$index[1],我会将其设为a而不是名称,或e而不是description

我之前使用whilemysql_fetch_array循环开始工作,但这会给我一个重复的元素(比如<tr>)而我只需要提取字段的值因为这将用于构建供用户管理的表单。

有人会有建议或不同方法让我做某事吗?

修改

查询来自类文件:

// extracted from my queries.class.php
public function my_prefs()
{
   global $db;
   $query = "SELECT * FROM preferences WHERE value!=NULL";
   return $db->select($query);
}
// extracted from the source file 
$module_details = $query->my_prefs();

编辑#2

也许这会帮助您了解我的需求:

foreach($module_details as $key => $value)
{
    print_r($module_details);
}

返回:

Array
(
    [0] => stdClass Object
    (
        [id] => 1
        [name] => lang
        [description] => default language
        [value] => en
    )

    [1] => stdClass Object
    (
        [id] => 1
        [name] => date
        [description] => date format
        [value] => YYYY-MM-DD
    )
}

我只需要访问lang / endate / YYYY-MM-DD

3 个答案:

答案 0 :(得分:0)

也许我误解了这个问题......

但我相信您正在尝试从阵列中访问特定的列条目。您可以使用输出的键而不是使用数字索引来执行此操作。

foreach($details as $key => $value)
{
   echo $value['name'];
   echo $value['value'];
   echo "<br />";
}

修改

如果您想限制查询的结果,那么您只需要替换所请求的字段:

 $query = "SELECT * FROM preferences WHERE value!=NULL";

 $query = "SELECT name, value FROM preferences WHERE value!=NULL";

答案 1 :(得分:0)

听起来你正在寻找这样的东西:

$tmp = array();
foreach($details as $key => $value)
{
    // "name" => "value" dictionary later access
    $tmp[$value["name"]] = $value["value"]; 
    echo $value["name"] . " = " . $value["name"]; // echos e.q. "date = YYYY-MM-DD"
    echo "<br/>";
}

echo $tmp["date"]; // echos e.q. "YYYY-MM-DD"

答案 2 :(得分:0)

终于得到了一些工作。这是我做的:

foreach($details as $row)
{
    $name = $row->name;
    $value = $row->value;

    // In order to specify for checkboxes, select, radio, etc.
    if($name == "lang")
    {
        // different info depending on the value
    }
    else
    {
        // do something generic here
    }
}

可能不是最佳选择,但这就像我需要它一样。