我是新的,仍在学习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();
}