首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PHP/PDO从MySQL创建单个数组

使用PHP/PDO从MySQL创建单个数组
EN

Stack Overflow用户
提问于 2018-08-28 00:07:13
回答 3查看 424关注 0票数 1

我正在尝试从db表创建一个单独的数组,该表只有几行,如下所示:

--------------
id   |   name
--------------
1    | value 1
2    | value 2
3    | value 3
--------------

我希望创建的数组尽可能简单,如value1、value2、value3

我正在使用这个函数

function getAll()
    {
        //select all data
        $sql = "SELECT name FROM " . $this->table_name . "  ORDER BY id";

        $prep_state = $this->db_conn->prepare($sql);
        $prep_state->execute();

        $row = $prep_state->fetch(PDO::FETCH_ASSOC);
        $this->name = $row['name'];
    }

有没有一种简单的方法可以做到这一点,也许是使用另一种PDO模式,比如用PDO::FETCH_UNIQUE完成,或者应该采取不同的方法?

更新-它是这样工作的(感谢@u_mulder)

function getAll()
{
    $sql = "SELECT name FROM " . $this->table_name . "  ORDER BY id";
    $prep_state = $this->db_conn->prepare($sql);
    $prep_state->execute();

    $names = $prep_state->fetchAll(PDO::FETCH_COLUMN, 0); 
    return(implode(",",$names));

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-28 00:16:18

您需要的是PDO::FETCH_COLUMN模式:

$sql = "SELECT name FROM " . $this->table_name . "  ORDER BY id";
$prep_state = $this->db_conn->prepare($sql);
$prep_state->execute();

// 0 indicates first column of result
$names = $prep_state->fetchAll(PDO::FETCH_COLUMN, 0); 
print_r($names);
// then do what you want.
票数 2
EN

Stack Overflow用户

发布于 2018-08-28 00:13:11

如果希望将所有名称放在一个数组中,可以尝试使用group_concat和explode

function getAll()
{
    //select all data
    $sql = "SELECT group_cancat(name) name FROM " . $this->table_name . "  ORDER BY id";

    $prep_state = $this->db_conn->prepare($sql);
    $prep_state->execute();

    $row = $prep_state->fetch(PDO::FETCH_ASSOC);

    // build an array from the concatenated  string pf names 
    $myArray = explode(',',  $row['name']);

    return $myArray;
}
票数 1
EN

Stack Overflow用户

发布于 2018-08-28 01:03:07

使用返回数组的fetchAll方法,然后在一个可以使用的变量中返回数组。

function getAll()
    {
        //select all data
        $sql = "SELECT name FROM " . $this->table_name . "  ORDER BY id";

        $prep_state = $this->db_conn->prepare($sql);
        $prep_state->execute();

        $row = $prep_state->fetchAll(); //changed this
        $return $row; //and this
    }

然后从该数组中获取值。

foreach($row as $key=>$value) {
//echo your results
}

键将是id,值将是name。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52043146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档