无法使用PDO的fetch或fetchAll函数获取任何数据

时间:2014-09-24 16:08:56

标签: php mysql pdo fetch 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个id的数组,这是它应该做的但是我无法获得这些数据。为什么?这是调用方法的代码。

<?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昏暗的数组。 没有第三个。 第四无所事。

我知道我在某种程度上使用fetchAll错误,但我无法弄清楚在哪里或如何。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您已使用PDO::FETCH_ASSOC作为关联数组。

但是因为你正在获取所有数组,所以数组是2维的。

$stateCodes[0]['id'];

或者你可以这样循环:

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