Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Doctrine i CONCAT
Forum PHP.pl > Forum > PHP > Frameworki
tejek
Witam,

Mam problem z tym kawałkiem kodu:
  1. $res = new Model_User();
  2. $res = Doctrine_Query::create()
  3. ->from('Model_User')
  4. ->where('MD5(SHA1(CONCAT(login,'.$this->autoLoginKey.',password))) = ?', $this->getRequest()->getParam('code'));
  5. $resCode = $res->fetchOne();


Wyrzuca mi taki bład:
Message: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

Wydje mi sie ze bład jest w tym kawałku ponieważ gdy go usunę działa poprawnie:
  1. '.$this->autoLoginKey.'


Nikt nie ma pomysłu??
Pilsener
Daj echo tego zapytania i wklej do myadmina, błąd ten sam?
A co $this->autoLoginKey zawiera?
A jak dasz sam where=$this->autoLoginKey to problem ten sam?
tejek
Auto key zawiera cos takiego:
  1. $this->autoLoginKey = 'e-#td}k]3?V!6%D0F4^;$ES.@)of/iRd';


A błąd polega na tym ze jak biorę CONCAT('...,'.$this->autoLoginKey.',....') to ddoctrine chce traktować $this->autoLoginKey jak by to była nazwa kolumny w tabeli bazy banych, ale takiej kolumny nie ma bazie danych. Tu moje pytanie jak obejść ten problem, aby Doctrine, a dokładnie komenda CONCAT() nie traktowała autoLoginKey jako nazwę kolumny tylko żeby łączyła dwie nazwy kolumn oraz autoLoginKey??

Liczę na wasza pomoc.
webdice
  1. ->where("MD5(SHA1(CONCAT(login,'".$this->autoLoginKey."',password))) = ?", $this->getRequest()->getParam('code'));


Jeśli nie zadziała, pokaż co Ci wyświetla:

  1. print $res;
Crozin
Dlaczego tego klucza nie traktujesz jak parametru zapytania? Na chwile obecną generuje Ci to błąd, bo masz jakąś dziwną składnię zapytania:
  1. MD5(SHA1(CONCAT(login,e-#td}k]3?V!6%D0F4^;$ES.@)of/iRd,password))) = ?
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.