相关疑难解决方法(0)

参考 - 这个错误在PHP中意味着什么?

这是什么?

这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.

为什么是这样?

Stack Overflow上经常弹出诸如"已发送标头""调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.

我该怎么办?

如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.

如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.

列表

另外,请参阅

php oop debugging warnings

1071
推荐指数
35
解决办法
19万
查看次数

试图获取非对象的属性

在控制页面上:

<?php
  include 'pages/db.php'; 
  $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
  $sidemenus = mysql_fetch_object($results);
?>
Run Code Online (Sandbox Code Playgroud)

在浏览页面上:

<?php foreach ($sidemenus as $sidemenu): ?>
  <?php echo $sidemenu->mname."<br />";?>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)

错误是:

注意:尝试在第22行的C:\ wamp\www\phone\pages\init.php中获取非对象的属性

你能修好它吗?我不知道发生了什么.

php mysql foreach object fetch

38
推荐指数
4
解决办法
45万
查看次数

PHP:对象在创建后立即为NULL

我们的php日志中偶尔会出现非常奇怪的错误:Trying to get property of non-object.

这个确切的错误似乎是由$shortName以下if语句中的成员访问引起的:

class MyLocaleWrapper extends SomeOtherClass {
    …
    protected static $system = NULL;
    public static function getSystemLocale() {
        if (self::$system === NULL) {
            self::$system = new self();
            debug(self::$system);
            self::$system->rfcName = SYSTEM_LOCALE_RFCNAME;
            self::$system->shortName = strtolower(Locale::getRegion(self::$system->rfcName));
            if (self::$system->shortName == '') {
                self::$system->shortName = strtolower(self::$system->rfcName);
            }
            …

# in another file:
class SomeOtherClass {
    …
    public function __construct() {
        # Some documentation about features that have been
        # removed from the constructor, but …
Run Code Online (Sandbox Code Playgroud)

php

9
推荐指数
1
解决办法
1542
查看次数

从变量实例化新对象

我正在使用以下类来自动加载我的所有类.这个类扩展了核心类.

class classAutoloader extends SH_Core {

     public function __construct() {
        spl_autoload_register(array($this, 'loader'));      
     }

     private function loader($class_name) {
        $class_name_plain = strtolower(str_replace("SH_", "", $class_name));
        include $class_name_plain . '.php';
     }
}
Run Code Online (Sandbox Code Playgroud)

我在__construct()我的核心类中实例化该类:

public function __construct() {
    $autoloader = new classAutoloader();
}
Run Code Online (Sandbox Code Playgroud)

现在我希望能够在loader类中实例化对象,如下所示:

private function loader($class_name) {
    $class_name_plain = strtolower(str_replace("SH_", "", $class_name));
    include $class_name_plain . '.php';
    $this->$class_name_plain = new $class_name;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误,这样调用$core-template:

require 'includes/classes/core.php';
$core = new SH_Core();

if (isset($_GET['p']) && !empty($_GET['p'])) {
    $core->template->loadPage($_GET['p']);
} else {
    $core->template->loadPage(FRONTPAGE);   
}
Run Code Online (Sandbox Code Playgroud)

错误: …

php

4
推荐指数
1
解决办法
5795
查看次数

PHP'非对象'错误

我正在使用PHP中的一个小型MVC框架进行练习.但是,PHP似乎不喜欢我的Controller类.该类包含一个加载视图的加载器实例:

abstract class Controller
{
    public $load;
    function __construct($load) 
    {
        $this->load = $load;
    }
    abstract public function index();
}
Run Code Online (Sandbox Code Playgroud)

从那里,我可以覆盖所有控制器的控制器.对于instace,我的索引控制器:

class Index extends Controller
{
    public function index()
    {
        $this->load->view("hello_world");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我创建它时:

require 'Controller.php';
require 'Load.php'
require 'controllers/Index.php';
$i = new Index(new Load());
$i->index();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

PHP Fatal error:  Call to a member function view() on a non-object in /var/www/controllers/Index.php on line 7
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?我知道我在构造函数中设置了load,而load类确实有一个名为view的方法,那为什么它会给我这个错误呢?另外:加载等级,只是为了好的措施

class Load
{
    public function view($filename, $data = null)
    {
        if(is_array($data)) extract($data); …
Run Code Online (Sandbox Code Playgroud)

php

4
推荐指数
1
解决办法
6534
查看次数

CodeIgniter - 在非对象上调用成员函数model()

我有一个在视图中创建的登录表单.然后在我的控制器中我试图加载我的模型,但似乎没有加载.在stackoverflow上查了几个答案,几乎每个人都说自动加载模型,导入数据库库等.我做到了,但我仍然得到错误

    Fatal error: Call to a member function model() on a non-object in C:\xampp\htdocs\\project\application\controllers\login.php on line 11 

    A PHP Error was encountered

    Severity: Notice

    Message: Undefined property: Login::$load

    Filename: controllers/login.php

    Line Number: 11
Run Code Online (Sandbox Code Playgroud)

login_view

<?php
    $loginEmail = array('placeholder' => "Email", 'name' => "loginEmail");
    $loginPassword = array('placeholder' => "Wachtwoord", 'name' => "loginPassword");
    $loginSubmit = array('name' => "loginSubmit", 'class' => "btn", 'value' => "Inloggen");
    $loginForgot = array('name' => "loginForgot", 'class' => "link", 'value' => "Wachtwoord vergeten?");

    echo form_open('login/login', array('class' => 'grid-100 formc')); …
Run Code Online (Sandbox Code Playgroud)

php codeigniter

3
推荐指数
1
解决办法
2万
查看次数

致命错误:在非对象中调用成员函数query()

致命错误:在线上的非对象上调用成员函数query():$ result = $ conn-> query($ sql)或die(mysqli_error());

谁知道什么是错的以及如何解决它?

<?php
function dbConnect($usertype, $connectionType = 'mysqli') {
  $host = 'localhost';
  $db = 'phpsols';
  if ($usertype  == 'read') {
    $user = 'psread';
    $pwd = '123';
  } elseif ($usertype == 'write') {
    $user = 'pswrite';
    $pwd = '123';
  } else {
    exit('Unrecognized connection type');
  }
  if ($connectionType == 'mysqli') {
    return new mysqli($host, $user, $pwd, $db) or die ('Cannot open database');
  } else {
    try {
      return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
    } catch (PDOException …
Run Code Online (Sandbox Code Playgroud)

php mysqli

2
推荐指数
2
解决办法
2万
查看次数

无法使用simple_html_dom获取具有指定类名的div元素?

我正在使用simple_html_dom,我有问题抓住一个div与下面指定的类名是code!

<?php
include 'simple_html_dom.php';
$html='
   <div class="user-info ">
    <div class="user-action-time">
        answered <span title="2016-06-27 20:01:45Z" class="relativetime">Jun 27 at 20:01</span>
    </div>
    <div class="user-gravatar32">
        <a href="/users/25355/david-mulder"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/09e3746cf7e47d4b3b15f5d871b91661?s=32&amp;d=identicon&amp;r=PG" alt="" width="32" height="32"></div></a>
    </div>
    <div class="user-details">
        <a href="/users/25355/david-mulder">David Mulder</a>
        <div class="-flair">
           '; 
echo $html->find('div[class=user-details]',0);
    ?>
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么我收到错误调用字符串中的成员函数find()

谢谢!

php simple-html-dom

1
推荐指数
1
解决办法
69
查看次数

PHP OOP:调用非对象上的成员函数

我用以下代码创建了一个用户类:

  <?php
    require_once("database.php");
    class User {
        public $id;
        public $username;
        public $password;
        public $first_name;
        public $last_name;

        public static function find_all() {
            return self::find_by_sql("select * from users");
        }
        public static function find_by_id($id=0) {
            global $database;
            $result_array=self::find_by_sql("Select * from users where id={$id} limit 1");
            if (!empty($result_array)) {
                return array_shift($result_array);
            } else {
                return FALSE;
            }
        }
        public function find_by_sql($sql="") {
            global $database;
            $result_set=$database->query($sql);
            $object_array=array();
            while ($row=$database->fetch_array($result_set)) {
                $object_array[]=self::instantiate($row);
            }
                return $object_array;
        }
        public function full_name() {
            if (isset($this->first_name)&& isset($this->last_name)) {
        return $this->first_name." …
Run Code Online (Sandbox Code Playgroud)

php

0
推荐指数
1
解决办法
2192
查看次数

OOP,MySQL类的问题

MVC返回fetch_array/object结果的类

  class DbDriver{
    private $connection;
    private $query;
    private $result;
    public function connect()
        {
        $host             = 'localhost';
        $user             = '';
        $password         = '';
        $database         = '';
        $this->connection = mysql_connect($host, $user, $password);
        $this->connection = mysql_select_db($database);
        return TRUE;
        }
    public function disconnect()
        {
        $this->connection->mysql_close();
        return TRUE;
        }
    public function prepare($query)
        {
        $this->query = $query;
        return TRUE;
        }
    public function query()
        {
        if (isset($this->query))
            {
            $this->result = $this->connection->mysql_query($this->query);
            return TRUE;
            }
        return FALSE;
        }
    public function fetch($type = 'object')
        {
        if (isset($this->result))
            {
            switch …
Run Code Online (Sandbox Code Playgroud)

php mysql

-2
推荐指数
1
解决办法
182
查看次数

标签 统计

php ×10

mysql ×2

codeigniter ×1

debugging ×1

fetch ×1

foreach ×1

mysqli ×1

object ×1

oop ×1

simple-html-dom ×1

warnings ×1