2010-06-08 5 views
0

Supposons que j'ai une requête de base de données qui ressemble à ci-dessous -objet personnalisé basé sur la table de base de données

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

Lorsque cette requête est exécutée, certains enregistrements de la base de données est retourné. Je veux exécuter cette requête à l'intérieur d'une fonction, puis créer un objet personnalisé qui contiendra les attributs exacts en tant que noms de colonnes, avec les valeurs correspondantes. A titre d'exemple, supposons que l'objet est X. Donc, il aura trois attributs qui sont X-> nom, X-> genre et X-> anniversaire, avec les valeurs correspondantes à partir des enregistrements.

Comme deuxième exemple, considérons la requête suivante -

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

Je veux exécuter cette requête dans la même fonction et en utilisant la même méthode, puis générer un objet personnalisé Y qui contiendra le attributs Y-> test1, Y-> test2 et Y-> test3.

Est-ce faisable en PHP? Si oui, alors comment?

Editer: Par objet personnalisé, je voulais dire n'importe quel type d'objet. Il n'a pas besoin d'être une instance d'une classe spécifique ou quelque chose comme ça. Je veux juste retourner un objet de cette fonction afin que je puisse remplir les classes appropriées à partir des valeurs de propriété de l'objet retourné.

+0

Aucune idée de comment faire oracle, mais je commencerais ici: http://php.net/manual/en/ref.pdo-oci.php –

Répondre

2

EDIT: cette réponse supposée Archangel utilisé MySQL, qui il se trouve est pas le cas. Désolé pour l'erreur! Je laisserai ma réponse ici au cas où des gens de MySQL la rencontreraient, ainsi que pour préserver les commentaires si nécessaire.

Si vous ne se soucient pas de classes personnalisées et ne voulez que votre nom d'attribut personnalisé dans les objets de ligne, cela est tout ce que vous devez:

$row_object = mysql_fetch_object($result); 

Sinon, vous devrez écrire votre propre classe vous (Je ne sais pas si un constructeur est nécessaire ou la fonction remplit votre objet avec des données automatiquement):

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

appeler ensuite la fonction comme ceci:

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

Il n'y a pas de moyen intégré que je connaisse pour générer des cours à la volée pour vous; tu devras écrire tes propres classes.

+0

qu'en est-il d'Oracle? que dois-je faire si je veux récupérer l'objet à partir d'une base de données Oracle? –

+0

Ah, vous ne l'avez pas dit. Cependant, je n'ai jamais travaillé avec Oracle, alors je ne peux malheureusement pas répondre à votre question. Je vais retag votre question afin que la base de données que vous utilisez soit claire. – BoltClock

+1

il y a la fonction 'oci_fetch_object' qui fera probablement la même chose ... –

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

s'il vous plaît voir le edit ... –

+0

Première partie est OK, mais la deuxième est l'hérésie! La concaténation va essayer de convertir l'objet en chaîne –

+0

Vous pouvez également supprimer votre réponse. Mais quel est le problème avec la première option? –

Questions connexes