2010-06-08 4 views
0

базы данных Предположим, что у меня есть запрос к базе данных, которая выглядит, как показано ниже -Пользовательский объект на основе таблицы

select name, gender, birthday from person where person_id = 1; 

Когда этот запрос выполняется, некоторые записи из базы данных возвращается. Я хочу выполнить этот запрос внутри функции, а затем создать пользовательский объект, который будет содержать точные атрибуты, как имена столбцов, с соответствующими значениями. В качестве примера предположим, что объект X. Таким образом, он будет иметь три атрибута: X-> имя, X-> пол и X-> день рождения, с соответствующими значениями из записей.

В качестве второго примера, рассмотрим следующий запрос -

select test1, test2, test3 from test where test_id = 1; 

Я хочу, чтобы выполнить этот запрос внутри одной и той же функции и используя тот же метод, затем создать пользовательский объект-Y, который будет содержать атрибуты Y-> тест1, Y-> тест2 и Y-> тест3.

Возможно ли это в PHP? Если да, то как?

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

+0

Не знаю, как сделать оракул, но я бы начал здесь: http://php.net/manual/en/ref.pdo-oci.php –

ответ

2

EDIT: этот ответ предполагается Архангел используется MySQL, что он оказывается не тот случай. Извините за ошибку! Я оставлю свой ответ здесь, если на него наткнутся любые люди из MySQL, а также, если необходимо, сохранить комментарии.

Если вы не заботитесь о пользовательских классах и только хотите, чтобы ваш пользовательские имена атрибутов в объектах строк, это все, что вам нужно:

$row_object = mysql_fetch_object($result); 

В противном случае, вам придется написать свой собственный класс самостоятельно (я не уверен, нужен ли конструктор или функция заполнит ваш объект с данными автоматически):

class X 
{ 
    public $name; 
    public $gender; 
    public $birthday; 
} 

Затем вызовите функцию следующим образом:

$row_object = mysql_fetch_object($result, 'X'); 

Нет встроенного способа, который я знаю для создания классов «на лету» для вас; вам придется писать свои собственные классы.

+0

Что относительно Oracle? что мне делать, если я хочу получить объект из базы данных Oracle? –

+0

А, ты так не сказал. Я никогда не работал с Oracle, но, к сожалению, я не могу ответить на ваш вопрос. Я верну свой вопрос, чтобы было понятно, какую базу данных вы используете. – BoltClock

+1

есть функция 'oci_fetch_object', которая, вероятно, сделает то же самое ... –

3
foreach ($result as $key => $value) 
{ 
    $your_object->{$key} = $value; 
} 
+0

см. Edit ... –

+0

Первая часть в порядке, но во-вторых, ересь! Конкатенация попытается передать объект в строку –

+0

Вы также можете удалить свой ответ. Но что случилось с первым вариантом? –

Смежные вопросы