поместить результаты запроса в объект - PullRequest
1 голос
/ 23 сентября 2010

Я использую php и postgresql.

Мне нужна функция, которая:

подключается к БД, если она еще не подключена, запустите запрос, безопасно поместите результаты в объект

Например: я делаю запрос «выбрать * из теста».Я получаю обратно 2 строки ... В 'test' есть три столбца (id, fname, lname).

У меня есть объект с именем $ ep.Я хочу иметь возможность поместить результаты имени столбца в объект, а также поместить значения в объект.Так что я мог бы сделать var_dump из $ ep-> fname, и он показал бы мне массив с двумя результатами.

Я не хочу жестко задавать имена столбцов в моей функции.Я хочу, чтобы это было динамичным.Поэтому, независимо от того, какую таблицу или столбцы я запрашиваю, она все помещает в объект для меня.

Ответы [ 3 ]

1 голос
/ 23 сентября 2010

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();
}
0 голосов
/ 23 сентября 2010

Вам нужно будет создать свой собственный массив или объект, а затем перебрать результаты, добавив каждый из них в массив / объект, как вы это сделали.

Есть несколько пакетов, которые включают эту функцию, например ezSQL .

0 голосов
/ 23 сентября 2010

Попробуйте

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++;
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...