вообщем вопрос такой. надо в проэкт добавить adodb. это такая библиотека на php которая поддерживает все популярные базы данных. раньше я как делал. в контролере подключал класс sql запросов. и отсылыл их модели. модель мне делала PHP: $result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); return $result; и этот $result я снова уже в контролере обрабатывал. выбирал значения из $row и т.д. а adodb работает так PHP: // выполняем какой нить запрос где $query это sql запрос $execute_query = $db->Execute("$query"); //получаем ответ $result = $execute_query->GetRows(); и каждый раз надо делать PHP: foreach($result as $k => $row) { echo "r1=".$row[0]." r2=".$row[1]."<br>"; $result->MoveNext(); } (MoveNext ) это метод для перехода на следующую строку в результате $result. чисто adodb фича и этот ответ мне надо передать в класс контролера. вопрос как с ним с контролере работать елси он получен из местного класса $db. как сделать красиво чтобы в контролере можно быть как и раньше простым while (($postrow[] = mysql_fetch_array($result) обработать. если кто себе представляет прошу от души напишите для примера пару строчек. как мне классу контролера объяснить что надо делать какой то там movenext ?
barnaki Как то не понимаю, зачем вы делаете foreach, если как вы говорите для получения следующей строки - надо вызывать специальный метод? В документации написано: PHP: $rs =& $rs->Execute($sql); while (!$rs->EOF) { var_dump($rs->fields); $rs->MoveNext(); }
ну while я буду использовать . не суть для меня. мне интересно как контролеру объяснить что надо какой то там movenext использовать и где он его возьмет если сам result пришел из модели.
barnaki я не вижу проблемы как-то. В первом коде - $result это ресурс, который обрабатывается с помощью mysql_fetch_*. Во втором коде - это уже объект класса, т.е. вместо mysql_fetch_* вы будете вызывать его методы, или я не прав?
тоесть если я передам объект то и в другом классе (которому передам ) смогу использовать его методы ?
barnaki вопрос, конечно, как передадите - но да, почему бы и не могли? Это же обычная переменная, хоть и с "продвинутыми" свойствами
2 Gifts блин не получается . я в модели делаю так PHP: $db->SetFetchMode(ADODB_FETCH_ASSOC); $result = $db->Execute($query); return $result; а в контролере так PHP: print_r($books_total->fields); но оно выводит Trying to get property of non-object . а как передать чтобы работали методы передоваемого объекта ?
barnaki если сделать этот вывод в модели - выводится нормально? PHP: $db->SetFetchMode(ADODB_FETCH_ASSOC); $result = $db->Execute($query); var_dump($result); var_dump($result->fields); return $result; Попробуйте возвращать указатель, а не сам результат: PHP: $db->SetFetchMode(ADODB_FETCH_ASSOC); $result = &$db->Execute($query); return $result; Вы уверены, что $books_total - это тот же $result что и в модели, и никак не обрабатывается? Выведите тип переменной и в модели и в контроллере: PHP: var_dump($books_total); print_r($books_total->fields); Наконец, попытайтесь если возможно сделать минимально рабочий пример с неисправностью, который можно запустить и проверить. Например в таком виде у меня все работает: PHP: include('adodb5/adodb.inc.php'); function ololo() { $DB = NewADOConnection('mysql'); list($server, $user, $pwd, $db) = array('localhost', 'root', '', 'achat'); $DB->Connect($server, $user, $pwd, $db); $rs = $DB->Execute("select * from config"); return $rs; } $rs = ololo(); var_dump($rs->fields); while ($array = $rs->FetchRow()) { print_r($array); }
блин а у меня не работает . вот мой код. PHP: public function db_query($query){ $db = &ADONewConnection('mysql'); $db->Connect($GLOBALS["server"], $GLOBALS["user"],$GLOBALS["password"], $GLOBALS["database"]); $db->SetFetchMode(ADODB_FETCH_ASSOC); echo "<br>"; var_dump($db); echo "<br>"; echo "$query"; echo "<br>"; $result = &$db->Execute("$query"); echo "<br>"; print_r($result->fields); echo "<br>"; var_dump($result); } var_dump ($query) нормально выводит запрос. var_dump ($db ) тоже выводит что все нормально. а вот потом result выводит bool false а $result->fields выводит Trying to get property of non-object . может быть вы увидете ошибку в моем коде ?
barnaki ошибка в запросе. Попробуйте так: PHP: echo "$query"; echo "<br>"; $result = &$db->Execute("$query"); echo "<br>"; if (!$result) var_dump($db->ErrorMsg()); И покажите запрос