A community in which webmasters can ask for help with topics such as PHP coding , MySQL , IT jobs, web design, IT security.
Current location:homephp forumphp talk in 2009 yearHow can I simply return objects in PDO? - page 1
User InfoPosts
How can I simply return objects in PDO?#1
Trying out PDO for the first time.

$dbh = new PDO("mysql:host=$hostname;dbname=animals", $username, $password);

$stmt = $dbh->query("SELECT * FROM animals");
$stmt->setFetchMode(PDO::FETCH_INTO, new animals);

foreach($stmt as $animals)
{
echo $animals->name;
}


If i skip the setFetchMode() method, then I need to call $animals["name"] which I do not want.

But I do not want to call the setFetchMode() for each query I do.

Is there a way to set the default FetchMode ? Or some other method to make the query() return objects with one global setting.

posted date: 2009-04-14 06:26:00


Re: How can I simply return objects in PDO?#2
I had made out the solution of this problem. click to view my topic...

hope that hepls.

posted date: 2009-04-14 06:26:01


Re: How can I simply return objects in PDO?#3
Perhaps you could try extending the PDO class to automatically call the function for you... in brief:class myPDO extends PDO{ function animalQuery($sql) { $result = parent::query($sql); $result->setFetchMode(PDO::FETCH_INTO, new animals); return $result; }// // useful if you have different classes// function vegetableQuery($sql)// {// $result = parent::query($sql);// $result->setFetchMode(PDO::FETCH_INTO, new vegetables);// return $result;// }}$dbh = new myPDO("mysql:host=$hostname;dbname=animals", $username, $password);$stmt = $dbh->animalQuery("SELECT * FROM animals");foreach($stmt as $animals){ echo $animals->name;}

posted date: 2009-04-14 07:12:00


Re: How can I simply return objects in PDO?#4
I had this in mind but wanted to look for something built in :) Thanks though. +1

posted date: 2009-04-14 07:37:00


Re: How can I simply return objects in PDO?#5
Since PDO would need to know what object you want to fetch into, you would need to specify it manually.But of you just want to use the object to retrieve the data rather than an array and do not care if its not an animal object, you can use anonymous objects by default when you set the attribute after the connection string which could be done in a wrapped constructor $connection = new PDO($connection_string); //PDO::FETCH_OBJ: returns an anonymous object with property names that correspond to the column names returned in your result set $connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); Then all queries will return objects. Though it(s not exactly what you want its close.You could also inject the data into your animal class:while($dataObj = ...) { $animal = new Animal($dataObj);}If you look at the query function it is possible to change some options by passing extra parameters:http://www.php.net/manual/en/pdo.query.phpI haven(t tested it but it looks like it gets you close to what you want

posted date: 2011-03-04 12:37:00


select page: « 1 »
Copyright ©2008-2017 www.momige.com, all rights reserved.