php - fatal error : Cannot use object of type stdClass as array in … on line 10

标签 php arrays compiler-errors stdclass

我收到此错误消息:

Fatal error: Cannot use object of type stdClass as array



码:
if(isset($_POST['anmelden']))
{
    $email = $_POST['email'];
    $passwort = $_POST['passwort'];

    $statement = $pdo->prepare("SELECT * FROM hwvor_nutzer WHERE nutzer_email = :email");
    $result = $statement->execute(array('email' => $email));
    $user = $statement->fetch();

    if($user !== false && password_verify($passwort, $user['passwort'])) 
    {
        $_SESSION['userid'] = $user['id'];
        die('Login erfolgreich. Weiter zum <a href="nutzerberich.php">internen Bereich</a>');
    } 
    else 
    {
        $errorMessage = "E-Mail oder Passwort war ungültig<br>";
    }
}

最佳答案

您可能需要在获取数据之前检查$result的值,以防查询失败。我猜问题是由该行中的$user['passwort']引起的

if($user !== false && password_verify($passwort, $user['passwort']))

如果查询失败,则$user = $statement->fetch();不会将数组分配给$user,而是其他不能作为数组处理的东西。

此外,我相信
$result = $statement->execute(array('email' => $email));

应该更改为
$result = $statement->execute(array(':email' => $email));

请注意额外的:,它似乎是必需的,请查看examples on php.net

关于php - fatal error : Cannot use object of type stdClass as array in … on line 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50871531/

相关文章:

php - 我怎样才能更好地理解 php 中 symfony2 中的服务层

sql - 在Oracle表中生成测试数据

php - 库存管理软件 - php MySQL

php - Laravel 为不同用户类型提供相同的 Controller

python - Numpy 获取二维数组中重复元素的确切参数

java - 如何使用方法返回用户输入值的 double 组?

java - 在java中打印一个变量n次

c++ - 如何编译 g++ 多个文件(对我不起作用)

python - abaqus脚本: TypeError: cannot concatenate 'str' and 'Set' objects

php - 相当于mysql/laravel中的qualify语句?