将查询结果放入对象中

时间:2010-09-23 03:35:02

标签: php sql postgresql

我正在使用php和postgresql。

我需要一个功能:

如果尚未连接,则

连接到数据库 安全地运行查询 将结果放入对象

例如: 我做了一个'select * from test'的查询。我回到了2行......'test'中有三列(id,fname,lname)。

我有一个名为$ ep的对象。我希望能够将列名结果放入对象中,并将值放入对象中。所以我可以做一个$ ep-> fname的var_dump,它会显示一个包含两个结果的数组。

我不想将列名硬编码到我的函数中。我希望它是动态的。所以无论我要求什么表或列,它都会将所有内容都放入对象中。

3 个答案:

答案 0 :(得分:1)

Object Relational Mapper (ORM)可以为您提供许多您描述的功能(以及更多功能)。看看:

这是Propel代码的样子:

$book = BookQuery::create()->findPK(123); // retrieve a record from a database
$book->setName('Don\'t be Hax0red!'); // modify. Don't worry about escaping
$book->save(); // persist the modification to the database

$books = BookQuery::create()  // retrieve all books...
  ->filterByPublishYear(2009) // ... published in 2009
  ->orderByTitle()            // ... ordered by title
  ->joinWith('Book.Author')   // ... with their author
  ->find();

foreach($books as $book) {
  echo  $book->getAuthor()->getFullName();
}

答案 1 :(得分:0)

<强>尝试

<强> pg_fetch_object

阅读文档

例如

<?php 
$database = "test";
$db_conn = pg_connect ("host=localhost port=5432 dbname=$database");
if (!$db_conn): ?>
    <H1>Failed connecting to postgres database <?php echo $database ?></H1> <?php
    exit;
endif;

$ep = pg_query ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // postgres needs a row counter other dbs might not 

while ($data = pg_fetch_object ($ep, $row)) {
    echo $data->fname;
    $row++;
}

?>

答案 2 :(得分:0)

您需要构建自己的数组或对象,然后循环遍历结果,并将其中的每一个添加到数组/对象中。

有些软件包包含此功能,例如ezSQL