хотите, чтобы метод возвращал массив объектов, каков наилучший способ получения данных из db, а затем заполнять список возвращаемых объектов.
<?php class DataObject{ public function GetObjetList(){ // Connect to the database server $dbh = new PDO("mysql:host=localhost;dbname=bookdb", "webuser", "secret"); // Execute the query return 1200 register $stmt = $dbh->query('SELECT sku, title FROM products ORDER BY title'); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $sku = $row['sku']; $title = $row['title']; return something?? --> how to?? } } ?>
С уважением!
PDO уже имеет режим выборки, который возвращает объекты.
Измените свой код на это:
while ($row = $stmt->fetch(PDO::FETCH_OBJ)) {
Вы можете вывести результаты в массив внутри цикла while, а затем вернуть массив после закрытия.
Изменить: Это то, что я имею в виду
<?php class DataObject{ public function GetObjetList(){ // Connect to the database server $dbh = new PDO("mysql:host=localhost;dbname=bookdb", "webuser", "secret"); // Execute the query return 1200 register $stmt = $dbh->query('SELECT sku, title FROM products ORDER BY title'); $array = array(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $sku = $row['sku']; $title = $row['title']; $array[] = $row; } return $array; } ?>
class DataObject { public function __construct($pdo) { $this->db = $pdo; } public function GetObjetList() { $sql = 'SELECT sku, title FROM products ORDER BY title'; return $this->db->query($sql)->fetchAll(PDO::FETCH_OBJ); } }
Поместите возврат через некоторое время, а не внутри, используйте FETCH_OBJ и массив:
$rows = array(); $rows = $stmt->fetchAll(PDO::FETCH_OBJ); return $rows;