Невозможно получить какие-либо данные с помощью функции извлечения PDO или fetchAll

Я был в этом в течение некоторого времени. Используя документацию PDO и основываясь на более ранних публикациях stackoverflow, я чувствую, что делаю это правильно, однако я не могу понять, где мои данные находятся в массиве, возвращаемом fetchAll. Любая помощь будет оценена.

В моем классе DatabaseHandler:

public function getStateList(){
$root = "root";
$rootpasswd = "password";
$host = "localhost";
try{
$dbh = new PDO("mysql:host=$host;dbname=TESTDATA;", $root, $rootpasswd);
$stmt = $dbh->prepare("SELECT id FROM state");
if(!$stmt->execute()){
//error
}
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}catch(PDOExeption $e){
//catch exception
}
}

Теперь при вызове этого метода он возвращает массив из 52 идентификаторов, что он и должен делать, однако я не могу получить эти данные. Зачем? Вот код, который вызывает метод.

<?php
require("./Database/DatabaseHandler.php");

$dbh = new DatabaseHandler();
$stateCodes = $dbh->getStateList();
$max = sizeof($stateCodes);

error_log("Arraysize=".$max."\n", 3, "/testlog/data.dat");
error_log("Position 0: ".$stateCodes[0]."\n", 3, "/testlog/data.dat");
error_log("Position[0][0]: ".$stateCodes[0][0]."\n", 3, "/testlog/data.dat");
error_log("Position[0][0][0]: ".$stateCodes[0][0][0]."\n", 3, "/testlog/data.dat");
?>

Первые записи журнала ошибок 52.
Второй возвращает слово Array, которое заставляет меня думать, что это массив 2 dim.
Третье ничего.
Четвертое Ничего.

Я знаю, что использую fetch. Все как-то не так, но я не могу понять, где и как. Заранее спасибо.

0

Решение

Вы использовали PDO::FETCH_ASSOC это будет ассоциативный массив.

Но так как вы выбираете все, массив является двухмерным.

$stateCodes[0]['id'];

В качестве альтернативы вы можете выполнить цикл следующим образом:

foreach($stateCodes as $code){
error_log("Code Id =" . $code['id']);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]