【问题标题】:selecting mysql data inside an array with PDO fetchAll使用 PDO fetchAll 在数组中选择 mysql 数据
【发布时间】:2012-06-23 06:43:54
【问题描述】:

我正在尝试使用 fetchAll 从 mysql 获取某些数据。

我目前有这个:

$sql1= $dbh->query("SELECT * FROM information");
$comments= $dbh->prepare("SELECT * FROM comments WHERE idinformation= ?");
if($retail){
while($row = $retail -> fetch(PDO::FETCH_ASSOC)){
  $comments->execute(array($row['idproducts']));
  $json['data'][] = array(
     'id'=>$row['idproducts'],
     "headline"=>$row['headline'],
     'price'=> array ("full_price" => $row['full_price']),
     'description'=>$row['description'],
     "comments" => $comments->fetchAll(PDO::FETCH_ASSOC)
);
}
$json_encode = json_encode($json);
$obj = json_decode($json_encode,true);  
}

我的 cmets 输出了我数据库中的所有列。如果我只想要 cmets、time、id 等怎么办……在这种语法中我该如何区分呢?

提前致谢!

【问题讨论】:

  • 在查询中写入列名而不是“*”。

标签: php mysql arrays json pdo


【解决方案1】:

查询 SQL 数据库时,SELECT 语句还应包含您想要返回的列列表。这不仅节省了时间,因为 SQL 数据库不必在每个查询中检索列列表,而且还需要您考虑需要什么。在您的情况下,如果您只想:commentstimeid,那么您应该指定它:

$comments= $dbh->prepare("SELECT id, time FROM comments WHERE idinformation= ?");

【讨论】:

    【解决方案2】:

    换行

    $comments= $dbh->prepare("SELECT * FROM comments WHERE idinformation= ?"); 
    

    $comments= $dbh->prepare("SELECT comments,time,id FROM comments WHERE idinformation= ?"); 
    

    编辑:

    或者在单个 SQL 查询中使用 group_concat(cmets time id, ', ')。您可以将其作为单个“JOIN”ed 查询来执行,如果您可以获得所需的分隔符,则可以对 cme​​ts 进行 group_concat。然后一切都在 SQL 端完成 = 更快。

    文档:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 2014-04-09
      • 2017-07-03
      • 1970-01-01
      • 2011-08-28
      • 2014-02-02
      • 2019-06-01
      • 2012-09-08
      • 1970-01-01
      相关资源
      最近更新 更多