![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
witam,
posiadam dziwny problem (choć śmiem wątpić, że jednak go nie posiadam... ani słowa na ten temat w google) wysyłam polecenie
no i szlak by to trafił - zawsze wykonuje się 2 razy. dam 2 zapytania pod rząd - wykona się jedno, wykona się drugie - a potem lecą duplikaty... jakieś pomysły? aha... pewno spytacie o kod. postanowiłem przekopiować z manuala:
otrzymuję 4 nowe wpisy, one => 1 (id 1), two => 2 (id 2), one => 1 (id 3), two => 2 (id 4) -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Generalnie to powinieneś dostać notice o niezdefiniowanej zmiennej $value i $name w lini 7 oraz 8. Druga sprawa to jest to że wykonujesz ten execute dwa razy, nie wiem jak ten kod wygląda dalej, no ale właśnie te 2x execute powodują dwukrotne wykonanie tego samego zapytania. Jak chcesz poczytać o PDO, to poczytaj tutaj: http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Druga sprawa to jest to że wykonujesz ten execute dwa razy, nie wiem jak ten kod wygląda dalej, no ale właśnie te 2x execute powodują dwukrotne wykonanie tego samego zapytania tak, tylko wykonuje się najpierw zapytanie z 13 (linii), potem 18 i znów z 13 i 18 PS to jest cały kod - specjalnie dałem do testów jak najprostszy aby błąd znaleźć -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 19 Dołączył: 13.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Może glupia sprawa, ale miałem ten sam problem z przeglądarka Chrome i dodatkiem do niego (htmlValidator) niestety już nie pamiętam, jaka była pelna nazwa tego validatora i ktora to była wersja. Ale może w tym lezy błąd...
![]() -------------------- www.maxcode.pl
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Może jestem głupi, bo obiektówki się dopiero uczę i wszystko robię jeszcze z wykorzystaniem funkcji mysql_*, ale...
w linii 18 masz "$stmt->execute();" - ale nie widzę, abyś po zmianie parametrów wykonywał ponownie "$stmt->bindParam" |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@by_ikar, @abort: PDOStatement::bindParam() jako drugi argument przyjmuje referencję, nie wartość zmiennej. Kod sam w sobie jest poprawny.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat no i szlak by to trafił - zawsze wykonuje się 2 razy. Odpowiedź jest banalnie prosta. Wykonujesz kod 2 razy. Albo strona ci się odswieza, albo kupa innych rzeczy powodujących wykonanie tego kodu dwa razy.dam 2 zapytania pod rząd - wykona się jedno, wykona się drugie - a potem lecą duplikaty... jakieś pomysły? Były dziesiatki takich "problemów" na forum, ludzie zawsze się zastrzegali że robią to tylko raz, ale zawsze się okazywalo, że robią to jednak dwa razy, zazwyczaj nieswiadomie, posrednio z jakiegoś innego powodu. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Albo strona ci się odswieza, albo kupa innych rzeczy powodujących wykonanie tego kodu dwa razy. trafne spostrzeżenie, tylko teraz pytanie czemu przy otwieraniu strony przez przeglądarkę wykonuje się 2 razy (testowane pod Operą, IE, FF), ale jak już wyśle żądanie w sposób "inszy" (bez ingerencji okna przeglądarki) działa poprawnie? póki co mam przynajmniej zajęcie na nudne wieczory aby to wyczaić - a nóż ustawienia apache/php czy jeszcze inne cuda tworzą takie herezje... tego to pewno najstarsze kaszuby nie wiedzą ![]() -edit- tak mnie jeszcze zastanawia, gdyby mi odświeżało to id tych rekordów (PDO::lastInsertId) dostałbym najświeższe - a tak się jednak nie dzieje Ten post edytował r4xz 30.11.2011, 22:24:34 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przeglądarki dosyć często próbują na ślepo wczytać plik favicon.png, być może to jest przyczyną - sprawdź w narzędziach deweloperskich przeglądarki, logach serwera, albo zapisuj do bazy zrzut danych z $_SERVER.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@by_ikar, @abort: PDOStatement::bindParam() jako drugi argument przyjmuje referencję, nie wartość zmiennej. Kod sam w sobie jest poprawny. Oj wiem że przyjmuje, tyle że parametry które podał 7 i 8 linijce, nie są wcześniej zdefiniowane, normalnie dostałby notica. To nie jest powód wykonywania tych samych zapytań 2x, tylko wskazałem że wcześniej nie jest zdefiniowany ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
a jest możliwe że najpierw zostanie otwarty plik index.php i częściowo wykonany, a dopiero potem htaccess wykonany?
htaccess: Kod RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA] po usunięciu w/w pliku działa poprawnie -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Oj wiem że przyjmuje, tyle że parametry które podał 7 i 8 linijce, nie są wcześniej zdefiniowane, normalnie dostałby notica. Nie, nie dostałby, ponieważ tam użyta jest referencja, nie wartość zmiennej. Kod jest w pełni poprawny - odpal sobie z raportowaniem błędów ustawionym na -1 jeśli nie wierzysz.Cytat a jest możliwe że najpierw zostanie otwarty plik index.php i częściowo wykonany, a dopiero potem htaccess wykonany? Musiałby istnieć jakiś bardzo poważny błąd w Apache'u - ale taki raczej nie istnieje.
Ten post edytował Crozin 30.11.2011, 23:04:54 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
To jest pewnie to o czym pisał ~Crozin. Mając przekierowanie wszystkich żądań do index.php w przypadku braku pliku favicon żądanie to również leci do index.php. Tak więc wczytując stronę wczytujesz index.php, a przeglądarka szukając favicon.ico również ładuje index.php. Niekoniecznie jest to favicon.ico, może jakiś inny plik wczytujesz, którego nie ma?
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Nie możesz tak przekierowywać zapytań w przypadku braku jakiegokolwiek pliku, zamiast dostać jakikolwiek błąd strona wczyta ci się poprostu po raz kolejny w tle, musisz dodać sprawdzanie czy plik nie jest przypadkiem plikiem graficznym/stylem/skryptem, na przykład tak:
Ten post edytował Uriziel01 1.12.2011, 10:55:54 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przeglądarki dosyć często próbują na ślepo wczytać plik favicon.png, być może to jest przyczyną - sprawdź w narzędziach deweloperskich przeglądarki, logach serwera, albo zapisuj do bazy zrzut danych z $_SERVER. przyczyną było, ale favicon.ico Kod RewriteCond %{REQUEST_FILENAME} ![^\?]*\.(jpg|png|css|js|ico)$ RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA] i po kłopocie.. ![]() temat zakończony -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 14:37 |