Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] 3 Database_Exception [ 2014 ] - very huge problem
Forum PHP.pl > Forum > PHP > Frameworki
Tiregan
Szanowni forumowicze,
Proszę Was o pomoc w rozwiązaniu problemu z zapytaniami. Otóż gdy wykonuje od 2 zapytań w górę(chyba obojętnie jakie) albo w metodzie kontrolera, bądź część w module, część w kontrolerze, to wywala mi taki błąd:
Cytat
Database_Exception [ 2014 ]: Commands out of sync; you can't run this command now [ SELECT node.id,CONCAT( REPEAT( '-', (COUNT(parent.name) - 1) ), node.name) AS name FROM nastedcategories AS node, nastedcategories AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.name ORDER BY node.lft; ]

Jak wrzuciłbym, to do widoku, to jest ok...

Podam zapytania w kolejności(dla przejrzystości usunąłem zmiennie i zamieniłem ze stringami):
  1. // 1
  2. $results = DB::query(NULL, 'CALL catadd04(4,\'nazwa_kategorii\');')->execute();
  3. // 2
  4. $query_cat = DB::query(Database::SELECT, "SELECT node.id,CONCAT( REPEAT( '-', (COUNT(parent.name) - 1) ), node.name) AS name FROM nastedcategories AS node, nastedcategories AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.name ORDER BY node.lft;")->execute();

Z procedurą jest wszystko ok, w konsoli MySQL działa, i w widoku(!) też(nawet w kontrolerze, jeżeli jest 1 zapytanie). Tak samo z select.

Z tego co wyczytałem na googlach, to problem jest z buforem w MySQL. Ale funkcja:
mysqli_free_result($results) nie działa, to wywala, że $results jest ma zły typ(int).
Chciałem użyć tej samej funkcji w MySQL, ale nie wiem jak się nazywa wynik tego zapytania, tzn. jaki argument podać funkcji mysql_free_result()...
To jest w ogóle dziwne, żeby nie móc 2 zapytań pod rząd zrobić... W widokach przecież tego nie mogę robić, bo to niepoprawne, a miałem tak tymczasowo zrobione, ponieważ nigdzie nie znalazłem rozwiązania(ale pytań, o to sporo).
Jak, to jest że inni nie mają z tym problemów i wykonują ile chcą zapytań? Nie rozumiem tego.

Dziękuję serdecznie,
A.
hatesz
$results ma zły typ, gdyż DB::query() zwraca typ Kohana_Database_Result a nie integer.
Aby uzyskać int-a możesz spróbować zrobić coś takiego:

W pliku MODPATH/database/classes/kohana/database/result.php zamień modyfikator właściwości $_result z protected na public. Potem przy wywoływaniu mysql_free_result jako argument daj $results->_result.

Ale uprzedzam, że nie sprawdzane. Tak mi tylko przyszło do głowy ; )
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.