【问题标题】:PDO result to PHP arrayPDO 结果到 PHP 数组
【发布时间】:2015-11-27 19:59:02
【问题描述】:

我真的被困在这里...:/ 这是我的问题,我需要将 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???) }

【问题讨论】:

  • 您可以添加您的 PDO 查询代码吗?您是否阅读过PDOStatemen fetchAllt 文档?
  • 当然,我使用常规 PDO 查询: $conn = new PDO("mysql:host=$host;dbname=$db",$username,$password); $conn->query('SET NAMES UTF8'); $sql = "SELECT * FROM tbl_name"; $q = $conn->准备($sql); $q->执行(数组($title)); $q->setFetchMode(PDO::FETCH_BOTH);而($data = $q->fetch()){ ????? (在这里放什么???) } 是的,我什至尝试过使用“FetchAll”语句。

标签: php arrays pdo


【解决方案1】:

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

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

或者您可以像这样获取单个列作为数组:

$names = $q->fetchAll( PDO::FETCH_COLUMN, 'name' );

更新

根据要求,这是一个完整的示例,包括在 PDO 中使用查询参数的演示。在这里,我们从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'];

注意,只选择您需要的列更有效:SELECT name FROM tbl_name

【讨论】:

  • 你能告诉我如何把它放在 PDO 查询中并回显它吗?还是有点 PHP 菜鸟...:/
  • 不确定我是否遵循 - 我确实使用您在评论中添加的代码更新了您的问题,并且该代码很好。您可以在我的答案中使用两个 sn-ps 中的任何一个,而不是您的 while 行。你想如何回应它?例如,您可以添加foreach ( $names as $name ) { echo "<div>$name</div>"; }
  • 作为 PHP 新手,我不知道如何处理您的答案。这就像半个指针,去弄清楚其余的......我需要它变得愚蠢我害怕。
  • 好的,我添加了一个完整的例子。希望澄清一些事情?
  • 好多了,谢谢 :) 但我需要这样的结果:'John', 'Peter', 'James' - 这样我就可以把它放在一个数组中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多