【问题标题】:MySQL PDO fetchAll as array with formatMySQL PDO fetchAll 作为具有格式的数组
【发布时间】:2019-06-01 11:11:53
【问题描述】:

我有这个 PDO 代码

function getAllUserTicketHistoryJson($rid){
    global $conn;
    $stmt = $conn->prepare("SELECT user_id, total_ticket FROM lottery_user WHERE round_id = :rou");
    $stmt->bindParam(':rou', $rid);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $res = $stmt->fetchAll();
    return $res;
}

并像这样在我的索引 php 文件中显示数据

$getAllUserTicketHistoryJson = getAllUserTicketHistoryJson($getRound['id']);

并将所有数据调用到这个

foreach($getAllUserTicketHistoryJson as $key => $value){
   $array=$value;
}

当我尝试 var_export($value);数据显示是这样的

array ( 'user_id' => '1', 'total_ticket' => '1', )array ( 'user_id' => '2', 'total_ticket' => '50', )array ( 'user_id' => '3', 'total_ticket' => '10', )array ( 'user_id' => '4', 'total_ticket' => '5', )

我的问题是,我可以将数据显示在一个数组中吗?

应该是这样的

array("1" => 1, '2' => 50, '3' => 10, '4' => 5)

如何让数据只在一个数组中?

【问题讨论】:

  • 您需要构建该数组。你可以只使用fetch 并在while 中构建它。类似$myarray[$row['user_id']] = $row['total_ticket'];
  • 感谢您的帮助

标签: php mysql pdo fetchall


【解决方案1】:

找到答案了,我们需要在 foreach 中自定义格式。

所以代码会是这样的

$data = array();
foreach($getAllUserTicketHistoryJson as $value){
    $data[$value['user_id']] = number_format((float)($value['total_ticket'] / $getAllTicketRound * 100), 2, '.', '');
}

【讨论】:

  • 我认为在函数中使用常规 fetch 会获得更好的性能(最低限度)。您当前的使用情况将不得不对数据集进行两次迭代。
猜你喜欢
  • 2012-09-08
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 2011-08-28
  • 2014-02-02
  • 1970-01-01
相关资源
最近更新 更多