foreach中缺少密钥

时间:2015-09-01 08:27:52

标签: php pdo

我已经多次这样做了,但这次不能弄清楚我做错了什么。

我只是通过我的数据库处理程序请求所有用户:

error_reporting(E_ALL); ini_set('display_errors', 1);
require_once '../include/DbHandler.php';

$db = new DbHandler();

$user_rows = $db->getAllUsers();

foreach($user_rows as $user)
{
    var_dump($user);
}

getAllUsers看起来像这样:

public function getAllUsers()
{
    $stmt = $this->conn->prepare("SELECT * from user");

    if ($stmt->execute()) 
    {      
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
}

我认为只要为每个用户的所有属性编写$ user ['id']等,我就可以获得每个用户的id。但$ user的var_dump显示所有键都消失了。整个结果的var_dump($ user_rows)向我显示每个用户的密钥仍然存在。

我已经完成了我的代码,我之前已经做了很多次,并且这次没有看到明显的区别,所以我无法弄清楚它为什么不起作用。

2 个答案:

答案 0 :(得分:1)

您只能使用fetchgetAllUsers返回一行。然后,您将循环遍历该行中的所有,一次获取一个值,并且您不会关注其密钥。

您很可能会尝试返回fetchAll一次返回多行。

答案 1 :(得分:0)

您需要使用fetchAll PDO功能:

AVPlayer stops playing and doesn't resume again

if ($stmt->execute()) 
{      
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

它返回一个包含所有元素的数组,而不是一个。