PDO将输出的数组存储到变量中

时间:2013-08-21 08:15:21

标签: php for-loop pdo fetchall

我正在使用PDO,当我回显foreach循环时,我有代码输出我的记录数组。但是我无法弄清楚如何在变量中存储它。如果我将echo替换为$foo =,则该变量为空。我的大脑被卡住了,我知道这并不难,但我想不出我需要改变什么。

我希望所有行都存储在变量中,例如  ['2013-08-09','Heptageniidae',3],['2013-08-09','Ephemerellidae',2],

由于

$sql  = "SELECT * FROM userrecords";
$stmt = $conn->prepare($sql);
$stmt->execute();

// $ data = $ stmt-> fetchAll();

echo json_encode( $stmt->fetchAll(PDO::FETCH_ROW);


    //foreach ($data as $row): 
    // echo "['" . $row['eventdate'] . "','" . $row['scientificname'] . "'," .  $row['category_of_taxom'] . "],";
    //endforeach 

2 个答案:

答案 0 :(得分:1)

这是正确的做法

echo json_encode( $stmt->fetchAll(PDO::FETCH_NUM) );

这就是你要求的

$foo = '';
foreach ($data as $row)
{
     $foo .= "['" . $row['eventdate'] . "','" 
          . $row['scientificname'] . "'," . $row['category_of_taxom'] . "],";
}
echo $foo;

错了。

永远不要手动创建JSON字符串。

答案 1 :(得分:-1)

看起来你没有做错任何事。 您可能想要检查$ stmt-> errorInfo();对于数据库问题,你可以使用var_dump();或print_r();在php中检查fetchAll()命令返回的数组的内容。