我正在尝试从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));
}
发布于 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.
发布于 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;
}
发布于 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。
https://stackoverflow.com/questions/52043146
复制相似问题