Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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 未在数组中传回变量_Php_Arrays_Oop_Class_Return - Fatal编程技术网

Php 未在数组中传回变量

Php 未在数组中传回变量,php,arrays,oop,class,return,Php,Arrays,Oop,Class,Return,这个问题与主题有关。我将语法更改为建议的语法,因此我的代码现在如下所示: 课堂教学方法: private $password; private $user_id; private $img_thumb; public function getUserInfo(){ $stmt = $this->dbh->prepare("SELECT user_id FROM oopforum_users WHERE username = ?");

这个问题与主题有关。我将语法更改为建议的语法,因此我的代码现在如下所示:

课堂教学方法:

private $password;
private $user_id;
private $img_thumb;

public function getUserInfo(){
            $stmt = $this->dbh->prepare("SELECT user_id FROM oopforum_users WHERE username = ?");
            $stmt->bindParam(1, $this->post_data['username']);
            $stmt->execute();

            while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

                $password = $row['password'];
                $user_id = $row['user_id'];
                $img_thumb = $row['thumbnail'];
            }
            return array(
                'password' => $this->password,
                'id' => $this->user_id,
                'thumb' => $this->img_thumb
                );

        }
呼叫程序:

session_start();
require_once('init.php');

$username = trim($_POST['username']);
// create a new object
$login = new Auth($_POST, $dbh);

    if($login->validateLogin()){

        $_SESSION['loggedin'] = true;
        $list = $login->getUserInfo();


        $_SESSION['password'] = $list['password'];
        $_SESSION['id'] = $list['id'];
        $_SESSION['thumb'] = $list['img_thumb'];
}
所有变量似乎都没有传回调用程序,我是否错过了类中需要显式声明它们可以传回的内容

I
print\u r()
'd是
$list
数组,它不包含这三个变量

数据库中确实存在这三个条目


在调用程序中将检索到的数据库条目返回数组时,我做错了什么?

在while循环中,将变量分配给当前对象:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  $this->password  = $row['password'];
  $this->user_id   = $row['user_id'];
  $this->img_thumb = $row['thumbnail'];
}
更新:并且您在SQL中遗漏了一些字段:

SELECT user_id, password, img_thumb FROM oopforum_users WHERE username = ?

这个,或者去掉所有的
$This->
,因为我不确定它们是否必要。您确定要从查询中返回一行吗?现在只返回用户id,而不返回密码或缩略图。@crm:您的SQL中缺少了一些字段。看我编辑过的答案。谢谢你们。。看起来我需要睡觉:)