hurriedly% 2012-10-07 15:11 采纳率: 100%
浏览 1163

这个错误在 PHP 中是什么意思?

What is this?

This is a number of answers about warnings, errors and notices you might encounter while programming PHP and have no clue how to fix. This is also a Community Wiki, so everyone is invited to participate in adding to and maintaining this list.

Why is this?

Questions like "Headers already sent" or "Calling a member of a non-object" pop up frequently on Stack Overflow. The root cause of those questions is always the same. So the answers to those questions typically repeat them and then show the OP which line to change in his/her particular case. These answers do not add any value to the site because they only apply to the OP's particular code. Other users having the same error can not easily read the solution out of it because they are too localized. That is sad, because once you understood the root cause, fixing the error is trivial. Hence, this list tries to explain the solution in a general way to apply.

What should I do here?

If your question has been marked as a duplicate of this, please find your error message below and apply the fix to your code. The answers usually contain further links to investigate in case it shouldn't be clear from the general answer alone.

If you want to contribute, please add your "favorite" error message, warning or notice, one per answer, a short description what it means (even if it is only highlighting terms to their manual page), a possible solution or debugging approach and a listing of existing Q&A that are of value. Also, feel free to improve any existing answers.

The List

Also see

转载于:https://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php

  • 写回答

30条回答 默认 最新

  • 旧行李 2012-10-07 15:11
    关注

    Fatal error: Call to a member function ... on a non-object

    Happens with code similar to xyz->method() where xyz is not an object and therefore that method can not be called.

    This is a fatal error which will stop the script (forward compatibility notice: It will become a catchable error starting with PHP 7).

    Most often this is a sign that the code has missing checks for error conditions. Validate that an object is actually an object before calling its methods.

    A typical example would be

    // ... some code using PDO
    $statement = $pdo->prepare('invalid query', ...);
    $statement->execute(...);
    

    In the example above, the query cannot be prepared and prepare() will assign false to $statement. Trying to call the execute() method will then result in the Fatal Error because false is a "non-object" because the value is a boolean.

    Figure out why your function returned a boolean instead of an object. For example, check the $pdo object for the last error that occurred. Details on how to debug this will depend on how errors are handled for the particular function/object/class in question.

    If even the ->prepare is failing then your $pdo database handle object didn't get passed into the current scope. Find where it got defined. Then pass it as a parameter, store it as property, or share it via the global scope.

    Another problem may be conditionally creating an object and then trying to call a method outside that conditional block. For example

    if ($someCondition) {
        $myObj = new MyObj();
    }
    // ...
    $myObj->someMethod();
    

    By attempting to execute the method outside the conditional block, your object may not be defined.

    Related Questions:

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件