按列名获取表:php,pdo

iecba09b  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(213)

我有下表:

columns, id , name , value

我想从pdo得到如下结果:

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

每个“name”数组都将保存值
为了得到name 1的值,我将做如下操作: $array["name1"]["value"] 我将按名称而不是id获取值
我试着用:

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

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

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

gv8xihay

gv8xihay1#

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

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

chhkpiq42#

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

$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();

相关问题