PDO结果为PHP数组

时间:2015-11-27 19:59:02

标签: php arrays pdo

我真的被困在这里......:/ 这是我的问题,我需要将PDO结果转换为PHP数组。像这样:

- Database - 
John
Peter
James

我需要进入一个PHP数组,看起来像这样:

$names = array('John', 'Peter', 'James')

这是如何完成的,如何删除最后一个逗号以使其工作? (我尝试了一些想法,但根本没有运气)。

$conn = new PDO("mysql:host=$host;dbname=$db",$username,$password);
$conn->query('SET NAMES UTF8');
$sql = "SELECT * FROM tbl_name"; 
$q = $conn->prepare($sql);
$q->execute(array($title));
$q->setFetchMode(PDO::FETCH_BOTH);
while($data = $q->fetch()){ ????? (what to put here???) }

1 个答案:

答案 0 :(得分:0)

有几种方法。假设包含名称的列名为someFunction, 我们可以像这样使用循环:

name

或者您可以将单个列作为数组获取:

$names = array();
while($data = $q->fetch())
  $names[] = $data['name'];

更新

根据要求,这是一个完整的示例,包括在PDO中使用查询参数的演示。在这里,我们选择$names = $q->fetchAll( PDO::FETCH_COLUMN, 'name' ); tbl_name列以title开头的所有条目,并打印一个包含$title列的列表:

name

注意,仅选择所需的列会更有效:$db = new PDO( "mysql:host=$host;dbname=$db", $username, $password, array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) ); $sth = $db->prepare( " SELECT * FROM tbl_name WHERE title LIKE ? " ); $sth->execute( array( "$title%" ) ); // put the names in an array $names = []; while( $row = $sth->fetch( PDO::FETCH_ASSOC ) ) $names[] = $row['name'];