假设您有一个具有某些属性的类,并且您已尽最大努力使这些属性与数据库中的列名相匹配,从而可以将数据库的每一行都放入类对象中。
我通常这样做的方法是创建一个方法$class->get_all()
来查询数据库中与特定查询匹配的所有行。然后,从资源集中,我用mysql_fetch_object($resource)创建了几个sql对象,并将它们存储在一个数组中,然后返回。基本上这样的事情经常发生:
<?php
while($row = mysql_fetch_object($result_set)){
$class->id = $row->id;
$class->name = $row->name;
$class->birthdate = $row->birthdate;
$output[] = $class;
}
return $output;
?>
这意味着我有两个具有相同属性的对象($row和$class),并且我正在将其中一个复制到另一个中。
有没有优化的方法?比如,与其将值从一个复制到另一个,不如将它们设置为指向相同sql对象属性的指针?
带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.
*/
}
注意:这是一个简化的示例。在生产代码中,您可能需要考虑用户输入,在这种情况下,您将使用准备好的语句。这不会改变获取结果的方式。