Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] nic nie mówiący komunikat po próbie pobrania danych przez select
Forum PHP.pl > Forum > PHP > Frameworki
czychacz
w modelu mam taką metodę:
  1. public function getUserGames($userId)
  2. {
  3. $select = Zend_Db_Table::getDefaultAdapter()->select();
  4. $select->from(array('g' => 'games'), array('*'))
  5. ->join(array('ug' => 'users_games'), 'g.id = ug.game_id', array())
  6. ->where('ug.user_id = ?', $userId);
  7. return $this->fetchAll($select);
  8. }

ale wywołanie jej kończy się komunikatem:
Cytat
message: sqlstate[42000]: syntax error or access violation: 1064 you have an error in your sql syntax; check the manual that corresponds to your mysql server version for the right syntax to use near '' at line 1

jeśli zamienię $select na $select->assemble(), to komunikat zmienia się na:
Cytat
message: sqlstate[21000]: cardinality violation: 1241 operand should contain 1 column(s)


ktoś może mi wytłumaczyć, o co chodzi?

//edit: zapytanie z assemble() wykonuje się w phpmyadminie bez problemów :/
drPayton
Po zbudowaniu select'a a przed wywołanie metody fetch wypisz sobie gdzieś (na ekran, czy do pliku) zapytanie, jakie buduje zend_db_select. W Twoim przypadku będzie to:
  1. echo $select->__toString()

I zapewne od razu zobaczysz jakiś problem.

W tym co podałeś obstawiałbym, że zmienna $userId zamiast pojedynczej wartości (int/string) zawiera coś innego, np tablicę.

Ale jak zobaczysz wygenerowane zapytanie to już sam szybko zobaczysz czy i ew gdzie tam jakiś problem jest.
czychacz
dzięki za odpowiedź, ale z tego, co widzę, __toString i assemble to to samo, a wspomniałem, że zapytanie stworzone w ten sposób w phpMyAdminie wykonuje się bez problemów...

//edit:
  1. return $this->fetchAll($select);

zamieniłem na
  1. return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);


i teraz działa. temat do zamknięcia
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.