我在DUser
课程中有一个函数,我想接受参数。
public function UserProfile($arg) {
$query = <<<SQL
SELECT firstName,lastName
FROM {$this->tprefix}profile
WHERE id = :thissession
SQL;
$resource = $this->db->db->prepare( $query );
$resource->execute( array (
':thissession' => $_SESSION['id'],
));
foreach($resource as $row) {
$this->firstname = $row['firstName'];
$this->lastname = $row['lastName'];
}
switch($arg) {
case 'firstname':
echo $this->firstname;
break;
case 'lastname':
echo $this->lastname;
break;
}
}
有了这个,我希望用户能够运行
<?php $users = new DUser();
$users->UserProfile("firstname");
它将返回当前登录的用户的名字,我已经看过了,我认为它确实可行,但是在使用时它不会返回任何数据。不是错误或任何事情,根本就没有数据。 = /如果有人发现写这种方式有任何问题,我将不胜感激。
答案 0 :(得分:2)
您正在执行查询,但您并未使用其中一种PDO方法(如PDOStatement :: fetch()或:: fetchAll())来搜索结果。此方法的可选参数是您想要对象或数组等等。
http://php.net/manual/en/pdostatement.fetchall.php
$resource = $this->db->db->prepare( $query );// YOU SURE IS db->db->prepare()???
$resource->execute( array (
':thissession' => $_SESSION['id'],
));
$result = $resource->fetchAll(PDO::FETCH_ASSOC); //This does the magic
foreach($result as $row) {
$this->firstname = $row['firstName'];
$this->lastname = $row['lastName'];
}
编辑:看到它应该返回一个结果,我会使用方法fetch()返回语句的下一行的内容,在本例中是单行结果。
$result = $resource->fetch(PDO::FETCH_ASSOC); //This does the magic
$this->firstname = $result['firstName'];
$this->lastname= $result['lastName'];