![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 1 Dołączył: 4.03.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Framework na którym operuje to Yii jak widać w tytule. Problem dotyczy wstawienia danych do bazy, które są przesłane z formularza. A więc tak mam formularz register.php (widok)
następnie dane przesyłane są do SiteController.php (kontrolera) w którym odbywa się walidacja
i wywoływane jest metoda wstaw z RegisterForm.php (modelu), która ma za zadanie wstawić dane do bazy.
Niestety otrzymuję wyjątek CDbException o treści. Cytat CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null. The SQL statement executed was: INSERT INTO tbl_user (username,password,email) VALUES(:username,:password,:email) Nie bardzo wiem jak to ugryźć, na pierwszy rzut oka wydaje się być wszystko w porządku. Może ktoś bardziej doświadczony posłuży radą (IMG:style_emoticons/default/smile.gif) . EDIT: Rozwiązałem to w inny sposób, a dokładniej za pomocą konstruktora zapytań:
Natomiast chętnie dowiem się dlaczego nie działa poprzedni kod. Ten post edytował cod3r 28.09.2012, 22:50:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 1 Dołączył: 4.03.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Ok, a więc faktycznie po zadeklarowaniu zmiennych
zapytanie się wykonało. artur_dziocha sama zmiana $username na $this->$username w zapytaniu z bindowaniem też rzucała wyjątek (sprawdzałem wcześniej). Dopiero po deklaracji przeszło. Natomiast zastanawia mnie czemu za pomocą konstruktora zapytań poszło bez deklaracji? Kolejna śmieszna sprawa, może ktoś zna na to odpowiedź. Otóż postanowiłem sobie spróbować wykonać zapytanie właśnie za pomocą konstruktora zapytań jak i zwykłego zapytania z bindowaniem parametrów. W momencie gdy używałem jednego drugi dałem w komentarz, o tak:
I ku mojemu zaskoczeniu w bazie danych po wykonaniu rejestracji zauważyłem 2 identyczne rekordy, tak, jak by zapytanie wykonało się 2 razy. Dlaczego? Nie mam pojęcia. Natomiast jak każdą linie zakomentuję pojedynczym komentarzem (//) to dodawany jest tylko 1 rekord, czyli jest poprawnie. Ogarnia ktoś dlaczego tak się dzieje? Trochę to dziwne i zabawne (IMG:style_emoticons/default/tongue.gif) . Wygląda to troche tak, jak by się wykonywały instrukcje zakomentowane (IMG:style_emoticons/default/biggrin.gif) . Ten post edytował cod3r 29.09.2012, 14:42:06 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 09:16 |