![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod (niedokończony ale odczytuje dane z bazy i zapisuje).
Błąd, który podałem w temacie pojawia się gdy tabela sessions wygląda tak:
Jeśli usunę UNIQUE(sessions_identifier) z tabeli to błąd się nie pojawia. Można to obejść sprawdzając czy wpis o podanym numerze sesji istnieje. Jeśli nie to wykonujemy insert a jeśli istnieje to update. Problem w tym, że zawsze sprawdzałem to poprzez mysql_affected_rows(). Niestety w tym wypadku to nic nie daje i błąd się pojawia. Mógłbym wykonywać selecta i sprawdzać czy został zwrócony wynik (jeśli tak to wpis już istnieje) ale chciałbym uniknąć zbędnego zapytania do bazy.. Macie jakiś pomysł? -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Mam trzy pytania pomocnicze?
Ten post edytował mike_mech 12.02.2007, 08:38:35 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam trzy pytania pomocnicze?
W $this->oConnection zapisana jest instancja klasy Mysql (domyślasz się co umożliwia)
Dokładnie ten sam błąd. @ nic w tym przypadku nie wnosi. -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie ten sam błąd. @ nic w tym przypadku nie wnosi. Hmm, tak. Ale nadal masz @ przed jedną z kluczowych instrukcji. Bardziej mi chodziło o to żebyś zdjął je zewsząd, to może pomóc w uzyskaniu tekstu błędu, który powie coś więcej. Zdejmij @ z przed mysql_query() w linii 14. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, tak. Ale nadal masz @ przed jedną z kluczowych instrukcji. Bardziej mi chodziło o to żebyś zdjął je zewsząd, to może pomóc w uzyskaniu tekstu błędu, który powie coś więcej. Zdejmij @ z przed mysql_query() w linii 14. Wszędzie pousuwałem @. Błąd ten sam. Nie wiem co jest grane.. Wszędzie pousuwałem @. Błąd ten sam. Nie wiem co jest grane.. EDIT: Na szybko napisałem:
I dostaję błąd: Kod Błąd zapytania Duplicate entry '1' for key 2 Czyli tak jak powinno być :/
-------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, zagadkowa sprawa.
Mam kolejne pytanko pomocnicze, które może pozwoli znaleźć przyczynę błędu. Czy problem wywala przy każdym zapytaniu INSERT czy tylko przy tych, które naruszają klucz unikalności? Podejrzewam, że odpowiedź jest jasna, że tylko podczas wstawiana takich samych danych, ale wolę się upewnić. Nie mniej jednak mam pomysł. Wstaw sam wyrzucanie wyjątku w miejscu gdzie faktycznie problem może wystąpić. Ciekawe czy nadal będzie fatal czy Twój wyjątek.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, zagadkowa sprawa. Mam kolejne pytanko pomocnicze, które może pozwoli znaleźć przyczynę błędu. Czy problem wywala przy każdym zapytaniu INSERT czy tylko przy tych, które naruszają klucz unikalności? Podejrzewam, że odpowiedź jest jasna, że tylko podczas wstawiana takich samych danych, ale wolę się upewnić. Pisałem, że tylko gdy jest naruszany klucz integralności.. Nie mniej jednak mam pomysł. Wstaw sam wyrzucanie wyjątku w miejscu gdzie faktycznie problem może wystąpić. Ciekawe czy nadal będzie fatal czy Twój wyjątek. Nadal fatal.. EDIT. Przetestowałem dokładniej. Sterownik do bazy mysql jest poprawny. Problem występuje tylko przy insercie wydawanym w klassie CubeSession. W innych miejscach poprawnie wywala informacje o duplikacji.. EDIT2. Problem rozwiązany. Trzeba było dodać obsługę wyjątków w CubeSession:
Nie rozumiem tylko dlaczego bez obsługi wyjątków wywala się tak.. Ktoś to potrafi wytłumaczyć? Ten post edytował J4r0d 13.02.2007, 21:31:35 -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mam identyczny przypadek i identyczny blad... rozwiazalem go podobnie, jednak to wyglada mi na amatorke:p
Wiem ze jest to blad w PHP, jednak znalezione rozwiazania z __destruct() i/lub __sleep() nie pomagaly, jesli ktos juz wie cos na ten temat wiecej, zapraszam:) -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Czy ludzie naprawdę nie domyślacie się dlaczego ? Skoro używacie session_set_save_handler(), to większość funkcji jest wywoływana po za skryptem i jak nie ma ramki try{}, to skrypt głupieje, bo jest po za...
-------------------- Jah Music Is On My Mind !
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.07.2025 - 10:20 |