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().