在PHP类中返回一个对象


Returning an Object In a PHP Class

我想让下面的事情发生在PHP PDO OOP

$conn = mysqli_connect("localhost", "root", "blogger.g", "test");
$query = mysqli_query($conn, "SELECT * FROM users WHERE username='sandeep'");
$row = mysqli_fetch_assoc($query);
echo $row['password'];

我以面向对象的方式使用的代码如下

class getResults{
    public $results;
    public function start(){
        try {
            $DTH = new PDO("mysql:host=127.0.0.1;dbname=test", "root", "blogger.g");
            $STH = $DTH->query("SELECT * FROM users WHERE username='sandeep'");
            $results = $STH->fetchAll(PDO::FETCH_OBJ);
            return $results;
        } catch (PDOException $e){
            return $e->getMessage();
        }
    }
}
var_dump(getResults::start());

我得到了以下输出

array(1) { [0]=> object(stdClass)#3 (3) { ["id"]=> string(1) "1" ["username"]=> string(7) "sandeep" ["password"]=> string(8) "password" } }

和我应该如何访问每个属性??

如果使用while()循环遍历对象,则可以访问每一行。

while($row = getResults::start()) {
    echo $row->id;
}

最后一个提示:如果您已经在使用PDO,请使用预处理语句。为了你的安全。

由于您的查询产生单行,因此不要使用fetchAll:

$results = $STH->fetch(PDO::FETCH_OBJ);

就足够了。现在,将返回值存储在一个变量中:

$x = getResults::start();

因为$x是一个类对象,你可以通过->操作符访问它的成员:

echo $x->username . "'n" . $x->password;

或者,可以使用PDO::FETCH_ASSOC:

$results = $STH->fetch(PDO::FETCH_ASSOC);
$x = getResults::start();
echo $x['username'] . "'n" . $x['password'];