PDO сохраняет выведенный массив в переменную

Я использую 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 ответа

Решение

Вот правильный способ того, что ты делаешь

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 вручную.

Похоже, вы ничего не делаете неправильно. Вы можете проверить $stmt->errorInfo(); для проблем с базой данных, и вы можете использовать var_dump(); или print_r(); в php проверить содержимое массива, который был возвращен командой fetchAll().

Другие вопросы по тегам