Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Dziwne zwracanie wartości z bazy mssql
Forum PHP.pl > Forum > PHP > Frameworki
k_@_m_i_l
Mam problem z bazą mssql.
Otóż gdy chcę pobrać listę rekordów z tabeli i jest problem. Odnoszę wrażenie, jakby wynik zwracany był zbyt duży, choć już sam nie wiem.
Tabela ma następujące pola :
Kod
  ID_KATEGORII, ID_MAGAZYNU, KOD_VAT, NAZWA, NUMER_DZIALU, MASKA_I_KATALOG, MASKA_I_HANDL, ID_DOMYSLNEJ_CENY, SEMAFOR, FLAGA_STANU, KONTO_FK_KATEGORII, KOD_VAT_ZAK, GUID_KATEGORIA, POLE1, POLE2, POLE3, POLE4, POLE5, POLE6, POLE7, POLE8, POLE9, POLE10

Kontroler wygląda tak :
  1. <?php
  2. defined('SYSPATH') or die('Dostęp zabrioniony');
  3. class Product_Controller extends Controller
  4. {
  5. private $template;
  6. private $model;
  7. private $limit = 12;
  8.  
  9. public function __construct()
  10. {
  11. parent::__construct();
  12. $this->template = new View('layout/layout');
  13. $this->model = new Product_Model;
  14. }
  15.  
  16. public function list_product()
  17. {
  18. $this->template->title = 'Lista produktów';
  19. $category = $this->model->list_category();
  20. $this->template->content = new View('product/list');
  21. echo Kohana::debug($category);
  22. $this->template->content->category = $category;
  23. $this->template->render(true);
  24. }
  25. }
  26. ?>

Model :
  1. <?php
  2. defined('SYSPATH') or die('Dostęp zabrioniony');
  3. class Product_Model extends Model
  4. {
  5. public function list_category()
  6. {
  7. $result = $this->db
  8. ->select('*')
  9. ->from('kategoria_artykulu')
  10. ->get();
  11. return $result;
  12. }
  13. ?>
  14.  

Widok tak :
  1. <?php
  2. defined('SYSPATH') or die('Dostęp zabrioniony');
  3. foreach($category->result_array(false) as $key=>$row)
  4. {
  5. echo Kohana::debug($row);
  6. }
  7. ?>

Wywołanie metody list_product() z kontrolera Product, daje taki rezultat :
  1. (array)
  2.  
  3.  


Jest problem po prostu gdy dam w SELECT *, to nie zwraca puste tablice, aczkolwiek ich liczba jest równa liczbie rekordów.
Gdy dam zamiast "*", listę pól to zwraca wynik. Ale gdy podam listę wszystkich pól, zwraca taki sam wynik jak przy "SELECT *".
Już nie wiem w czym jest problem.
Gdy zmienię w modelu kod funkcji na:
  1. public function list_category()
  2. {
  3. $result = $this->db
  4. ->select('ID_KATEGORII','NAZWA')
  5. ->from('kategoria_artykulu')
  6. ->get();
  7. return $result;
  8. }


to dostaję następujący wynik(powinien zwrócić 3rekordy)
  1.  
  2. (
  3. [ID_KATEGORII] => 2
  4. [NAZWA] => Kategoria
  5. )
  6.  
  7. (
  8. [ID_KATEGORII] => 4
  9. [NAZWA] => Motoryzacja
  10. )
  11.  


I zwraca 3, z tym że pierwszy rekord jest pusty. Nie wiem już, czy to moja nie wiedza o czymś powoduje to;)

Jest to uruchamiane na localhoscie(xampp 1.7.0). Serwer baz mssql to MS SQL Server 2005. W php.ini dla mssql jest ustawione tak(domyślne wartości):
Kod
[MSSQL]
; Allow or prevent persistent links.
mssql.allow_persistent = On

; Maximum number of persistent links.  -1 means no limit.
mssql.max_persistent = -1

; Maximum number of links (persistent+non persistent).  -1 means no limit.
mssql.max_links = -1

; Minimum error severity to display.
mssql.min_error_severity = 10

; Minimum message severity to display.
mssql.min_message_severity = 10

; Compatability mode with old versions of PHP 3.0.
mssql.compatability_mode = Off

; Connect timeout
;mssql.connect_timeout = 5

; Query timeout
;mssql.timeout = 60

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textsize = 4096

; Limits the number of records in each batch.  0 = all records in one batch.
;mssql.batchsize = 0

; Specify how datetime and datetim4 columns are returned
; On => Returns data converted to SQL server settings
; Off => Returns values as YYYY-MM-DD hh:mm:ss
;mssql.datetimeconvert = On

; Use NT authentication when connecting to the server

Aczkolwiek to zjawisko nie występuje dla wszystkich tabel.
Może ktoś miał podobny problem.
arachnia
pewnie znalazles juz rozwiązanie, jak dla mnnie w kontrolerze brakuje zapytania o rezultat np. result_array()


czyli:
  1. public function list_product()
  2.  
  3. {
  4.  
  5. $this->template->title = 'Lista produktów';
  6.  
  7. $category = $this->model->list_category()->result_array();
  8.  
  9. }

http://docs.kohanaphp.com/libraries/database/result
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.