Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OOP返回一些不可接受的数组_Php_Arrays_Oop_Pdo - Fatal编程技术网

Php OOP返回一些不可接受的数组

Php OOP返回一些不可接受的数组,php,arrays,oop,pdo,Php,Arrays,Oop,Pdo,好的,我尝试在类文件中返回一个数组,并像array['variable']那样回显数组;但出于某种原因,它表示[]括号内的变量未定义,但当我var_转储数组时,它会正常显示所有数组内容。这是我的密码: Login.class.php <?php class login { public $database; public $username; public $password; function __constr

好的,我尝试在类文件中返回一个数组,并像array['variable']那样回显数组;但出于某种原因,它表示[]括号内的变量未定义,但当我var_转储数组时,它会正常显示所有数组内容。这是我的密码:

Login.class.php

<?php

    class login {

        public $database;
        public $username;
        public $password;

        function __construct($database, $username, $password) {
            $this->database = $database;
            $this->username = $username;
            $this->password = $password;
        }

        public function encrypt() {
            return md5(md5($this->password));
        }

        public function doLogin() {
                $IsVerified = $this->database->getRows("SELECT * FROM `users` WHERE `username` = ? AND `password` = ?", array($this->username, $this->encrypt()));
                return $IsVerified;
        }
    }
config.php

<?php

    class config
    {
        public $isConnected;
        protected $datab;
        public $username;
        public $password;
        public $dbname;
        public $host;

        public function __construct($options=array()){
            $this->username = "root";
            $this->password = "";
            $this->dbname = "";
            $this->host = "localhost";
            $this->isConnected = true;

            try { 
                $this->datab = new PDO("mysql:host={$this->host};dbname={$this->dbname};charset=utf8", $this->username, $this->password, $options); 
                $this->datab->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
                $this->datab->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            } 
            catch(PDOException $e) { 
                $this->isConnected = false;
                throw new Exception($e->getMessage());
            }
        }

        public function Disconnect(){
            $this->datab = null;
            $this->isConnected = false;
        }

        public function getRow($query, $params=array()){
            try{ 
                $stmt = $this->datab->prepare($query); 
                $stmt->execute($params);
                return $stmt->fetch();  
                }catch(PDOException $e){
                throw new Exception($e->getMessage());
            }
        }

        public function getRows($query, $params=array()){
            try{ 
                $stmt = $this->datab->prepare($query); 
                $stmt->execute($params);
                return $stmt->fetchAll();       
                }catch(PDOException $e){
                throw new Exception($e->getMessage());
            }       
        }

        public function getRowCount($query, $params=array()){
            try{ 
                $stmt = $this->datab->prepare($query); 
                $stmt->execute($params);
                return $stmt->rowCount();  
                }catch(PDOException $e){
                throw new Exception($e->getMessage());
            }
        }

        public function insertRow($query, $params){
            try{ 
                $stmt = $this->datab->prepare($query); 
                $stmt->execute($params);
                }catch(PDOException $e){
                throw new Exception($e->getMessage());
            }           
        }

        public function updateRow($query, $params){
            return $this->insertRow($query, $params);
        }

        public function deleteRow($query, $params){
            return $this->insertRow($query, $params);
        }
    }

?>
当我尝试回显$userdata['firstname']时;上面说 “注意:第13行C:\xampp\htdocs\site\login.php中未定义的索引:firstname”

但当I var_dump时,它会显示所有阵列内容。 非常感谢您的帮助

这是请求的var_转储

array(1) {
    [0]=> array(10) {
        ["id"]=> string(1) "0" 
        ["username"]=> string(7) "patrick" 
        ["password"]=> string(32) "432g1hjkgj2hgjhg34342" 
        ["groupid"]=> string(1) "1" 
        ["email"]=> string(15) "email@gmail.com" 
        ["verified"]=> string(1) "0" 
        ["birthday"]=> string(0) "" 
        ["firstname"]=> string(4) "john" 
        ["lastname"]=> string(9) "cena" 
        ["regdate"]=> string(0) "" 
    } 
} 
var_dump()
会使这更容易,但是在
doLogin()
方法中,您正在调用
getRows()
方法,该方法反过来调用PDO对象

因此,您可能需要:

$UserData[0]['firstname']

Edit:刚刚被
var\u dump()
确认,

那么,它应该是$UserData[0]['firstname']。请参见

它可能是一个对象,而不是数组。尝试访问属性,如$userdata->firstname已经尝试过了,说它不是一个“试图获取非对象属性”的对象。你能添加
var\u dump()
?下次你自己要找到问题,需要做的是在回显之前导出($userdata)。这样,您就可以清楚地识别您试图访问的内容。如果它是空的,请尝试返回并调试数据丢失的原因所有这些工作都可以使用MD5(tsk tsk)。使用或PHP5.5的函数。我喜欢人们以秒为单位互相殴打:-)@ManuelArwedSchmidt同意。然而,我要说的是,jeroen在var_dump()之前就知道问题所在。
array(1) {
    [0]=> array(10) {
        ["id"]=> string(1) "0" 
        ["username"]=> string(7) "patrick" 
        ["password"]=> string(32) "432g1hjkgj2hgjhg34342" 
        ["groupid"]=> string(1) "1" 
        ["email"]=> string(15) "email@gmail.com" 
        ["verified"]=> string(1) "0" 
        ["birthday"]=> string(0) "" 
        ["firstname"]=> string(4) "john" 
        ["lastname"]=> string(9) "cena" 
        ["regdate"]=> string(0) "" 
    } 
} 
$UserData[0]['firstname']