【问题标题】:PHP Incomplete Class OOPPHP 不完整类 OOP
【发布时间】:2013-12-05 11:56:00
【问题描述】:

你好,我有这个代码

public function query($sql, $params = array()) {

        $this->_error = false;

        if($this->_query = $this->_pdo->prepare($sql)) {
            $x = 1;
            if(count($params)) {
                foreach($params as $param) {
                    $this->_query->bindValue($x, $param);
                    $x++;
                }
            }

            if($this->_query->execute()) {
                $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                $this->_count = $this->_query->rowCount();
            } else {
                $this->_error = true;
            }
        }

        return $this;
    }

当我运行它时,它说我在行中有错误

$this->_query->bindValue($x, $param);

错误消息说 可捕获的致命错误:__PHP_Incomplete_Class 类的对象无法转换为字符串 请有任何帮助 谢谢

编辑

$params 的 var_dump

array(1) { 
    [0]=> object(__PHP_Incomplete_Class)#1 (6) { 
        ["__PHP_Incomplete_Class_Name"]=> string(4) 
        "User" ["_db":"User":private]=> object(__PHP_Incomplete_Class)#2 (2) {
            ["__PHP_Incomplete_Class_Name"]=> string(2) "DB" 
            ["connection"]=> NULL 
        } 
        ["_sessionName":"User":private]=> string(4) "user" 
        ["_cookieName":"User":private]=> string(4) "hash" 
        ["_data":"User":private]=> object(stdClass)#3 (7) { 
            ["id"]=> string(3) "144" 
            ["username"]=> string(5) "admin" 
            ["password"]=> string(64) "0611affa6664e471b939cd3197b49e0c3b47d146fc12a472c4275dbd85a7cd67" 
            ["salt"]=> string(32) "458a0dbfbd9bdca381e50b8d753329ea" 
            ["name"]=> string(12) "Artur Papyan" 
            ["joined"]=> string(19) "2013-11-29 07:41:54" 
            ["group"]=> string(1) "1" 
        } 
        ["_isLoggedIn":"User":private]=> bool(true) 
    }
} 

【问题讨论】:

  • $params 包含什么?该数组中是否有没有 __toString() 方法的对象?
  • 你是不是偶然使用了序列化对象?
  • 参数包含 sql syndax,不,我不序列化对象
  • 你能显示一个 $params 的 var_dump()
  • 这里是 var_dump();因为字数限制不允许我写我会像回答抱歉一样发布它

标签: php mysql oop


【解决方案1】:

错误说得很清楚:$params 至少包含一个 __PHP_Incomplete_Class 对象,显然无法将其转换为字符串来填充您的查询。

您获得__PHP_Incomplete_Class 对象的原因是由于之前未加载类的会话存储对象的反序列化。因此,您必须在会话开始之前包含您的会话存储类。如果您需要我的建议,自动加载是加载类的最佳方式,因此您可以完全忘记 include/require 语句。你可以在这里找到更多信息:http://www.php.net/manual/en/language.oop5.autoload.php

【讨论】:

  • 我尝试使用 include,并且使用 include_once 我有自动加载功能,但在我的本地服务器上一切正常,在 web 服务器上我有问题,在我的 web 服务器上,php 版本是 5.3>
  • @Arturik1988 在包含session_start() 之前的类之前,它是否在您的本地服务器中工作?
猜你喜欢
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多