按列名获取表:PHP,PDO

时间:2018-01-16 08:38:56

标签: php mysql pdo

我有下表:

columns, id , name , value

我想从pdo得到如下结果:

array = ["name1", "name2" ,"name3"]

和每个"名称"数组将保持值

所以要获得名称1的值,我会做类似的事情: $array["name1"]["value"]我将按名称获取值,而不是ID

我尝试用:

$sth = $this->db->prepare("SELECT name ,value FROM table");

$result = $sth->fetchAll(FETCH_ASSOC);

但是它返回了索引数组,只有id才能得到名称和值

2 个答案:

答案 0 :(得分:2)

为此,您需要获取此类型的关联数组:

$list= array(
'name1'=>'value1',
'name2'=>'value2',
'name3'=>'value3'
)

而不是你提到的简单类型:

array = ["name1", "name2" ,"name3"]

所以你按照这个程序:

 $res = $this->db->prepare("SELECT name,value FROM table");
    $res->execute($params);
    $fetch= $res->fetchAll(PDO::FETCH_ASSOC);

    $list = array();
    for ($i = 0; $i < count($fetch); $i++) {
        $list[$fetch[$i]['name']] = $fetch[$i]['value'];
    }

    $res->closeCursor();

答案 1 :(得分:0)

您必须使用转换后的数据创建新数组:

$sth = $this->db->prepare("SELECT name, value FROM table");
$result = array_values($sth->fetchAll(FETCH_ASSOC));
$new = [];
foreach($result as $ar) {
    $new[$ar['name']] = $ar['value'];
}