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

标签 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 的方式是错误的,但我不知道在哪里或如何使用。预先感谢您。

最佳答案

您已经使用了 PDO::FETCH_ASSOC ,它将成为一个关联数组。

但是由于您要获取所有内容,因此该数组是二维的。

$stateCodes[0]['id'];

或者你可以这样循环:

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

关于php - 无法使用 PDO 的 fetch 或 fetchAll 函数获取任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021639/

相关文章:

php搜索帮助

php - 我在按类别显示数据时遇到问题

php - laravel - 使用外键查询

php - 为 PHP docker 镜像安装/配置 SQL Server PDO 驱动程序

php - 进行分页/粗略估计总行数的最有效方法

php - 有没有人有在 PHP 中使用 berkeley db 的经验?

php - 在重新加载/重定向期间保持变量结果

php - 密码强度不适用于重置密码 Symfony

php - 调试 CakePHP 应用程序时完全忽略断点

php - 选择插入不工作