PHP从数据库中设置值

时间:2018-03-08 11:53:45

标签: php postgresql get set

我是新的,仍在学习php,我试图设置我从postgresql数据库中检索的值,但我的代码有问题,我无法弄清楚,我希望有人在这里可以帮助我。 :)

这是代码:

public function __construct($username, $password)
{
    $config = new Config();
    $dbconn = pg_connect($config->getDbDsn()); // getDbDsn contains all the information that is needed to connect to the database.
    $query = "SELECT username, password, id FROM user.member WHERE username = '$username'";
    $result = pg_query($dbconn, $query);

    $db = pg_fetch_all($result);


    if($db)
    {
        foreach($db as $d)
        {
            if( $d['username'] == $username && $d['password'] == $password)
            {
                $this->verified = true;
                $this->id = $d['id']; //save id does not work
                $this->user = $d['username']; // save username does not work

            }
            else
            {
                $this->verified = false;
            }
        }
    }
    else
    {
        $this->verified = false;
    }
}

好的,这就是我想要做的事情。首先我要求数据库从表中提供信息,这与我的用户用户名和密码相匹配。我正在使用bool(已验证)来验证用户。这很好。但是,当我试图为我的用户设置用户名和id的值时,这是不可能的。如果我正在创建一个set_val函数(只是为了测试我的代码,试图找到我的错误):

private $a = "";
private function set_val($data){ $this->a = $data; }

我在构造函数中使用该函数来设置值:

$this->set_val('hello');

工作正常,直到我把这个函数放在我的if($ db)-statment中,然后它就不再工作了。 (如果我把它放在if($ db)-statement之外,就好像直接在$ db = pg_fetch_all($ result);)下一样。

$db = pg_fetch_all($result);

$this->set_val('hello'); // This works fine 

if($db)
{ 
   $this->set_val('hello'); // This does not work at all

    foreach($db as $d)
         $this->set_val('hello'); // And not this
}

对于我的get_val,我有这段代码:

public function get_val(){
    return $this->a;
}

(我也有与id和用户名相同的get函数)

在这里我试图回应我的价值,如果我把set_val-function放在我的if语句(和foreach语句)之外,那么它的工作正常:

public function echo_val(){
     echo $this->get_val();
}

0 个答案:

没有答案