检索数据库信息到类的有效方法

时间:2012-07-29 18:50:08

标签: php oop

假设你有一个具有某些属性的类,并且你已经尽力了,所以这些属性将匹配数据库中的列名,这样你就可以将db的每一行都放入类对象中。

我通常这样做的方法是创建一个方法$class->get_all()来查询数据库中与特定查询匹配的所有行。然后,我从资源集创建几个sql对象,使用mysql_fetch_object($ resource)并将它们存储在一个数组中,然后返回该数组。基本上这样的事情通常会发生:

<?php 
    while($row = mysql_fetch_object($result_set)){
        $class->id = $row->id;
        $class->name = $row->name;
        $class->birthdate = $row->birthdate;

        $output[] = $class;
    }

    return $output;
?>

...这意味着我有2个对象($ row和$ class),具有相同的属性,我将其中一个复制到另一个。

有没有办法优化这个?比如,不是将值从一个复制到另一个,而是将它们设置为指向同一sql对象属性的指针?

1 个答案:

答案 0 :(得分:2)

使用PDO:

<?php

    $pdo = new PDO("mysql:host=localhost;dbname=database_name", "user", "pass");
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $stmt = $pdo->query("SELECT `id`, `username`, `password` FROM `whatever`");

    while ($class = $stmt->fetchObject("YourClassNameHere")) {
        /*
        * $class now holds an object of type YourClassNameHere
        * With all properties set properly.
        */
    }

注意:这是一个简化的示例。在生产代码中,您可能需要考虑用户输入,在这种情况下,您使用预准备语句。这不会改变您获取结果的方式。