在配置文件获取中使用参数


Utilizing argument within profile fetch

在我的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");

它会返回当前登录的用户的名字,我看过这个,我认为它肯定会工作,但当使用它返回没有数据。没有错误,只是没有数据。

您正在执行查询,但您没有使用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'];
}

EDIT:看到它应该返回单个结果,我将使用fetch()方法返回语句下一行的内容,在本例中为单行结果。

$result =  $resource->fetch(PDO::FETCH_ASSOC); //This does the magic
$this->firstname = $result['firstName'];
$this->lastname= $result['lastName'];