Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Pętla while zwraca false, while ($id = $stmt->fetch(PDO::FETCH_ASSOC));
MESSIAH :)
post
Post #1





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Mam problem z pętlą. Gdy próbuję tego kodu:
  1. while ($id = $stmt->fetch(PDO::FETCH_ASSOC));

Wtedy pętla zwraca false a gdy użyję tego samego kodu poza pętlą wszystko działa prawidłowo. Jak zinterpretować prawidłowo pętlę while z PDO?


--------------------
Go to the top of the page
+Quote Post
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


A po co Ci średnik na końcu?


--------------------
Go to the top of the page
+Quote Post
MESSIAH :)
post
Post #3





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Bez niego PHPStorm krzyczał że zmienne nie są zdefiniowane. Rozwiązałem częściowo problem poprzez zastosowanie foreach tylko nie wiem czemu ta funkcja przypisała jedną wartość dla 2 elementów?
  1. $id = $stmt->fetch(PDO::FETCH_ASSOC);
  2. foreach($id as $i){
  3. $bdnazwauzytkownika = $i['użytkownik']; //$bdnazwaużytkownika = b (powinno być a)
  4. $bdhaslo = $i['hasło']; //bdhaslo = b
  5. } if ($nazwauzytkownika = $bdnazwauzytkownika && $haslo = $bdhaslo) {
  6. echo "Jesteś w środku <a href='member.php'>Kliknij aby się zalogować</a>";
  7. $_SESSION['nazwauzytkownika'] = $bdnazwauzytkownika;
  8. } else {
  9. echo "Złe hasło";
  10. }


Rozwiązano:
  1. $id = array($stmt->fetch(PDO::FETCH_ASSOC));


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zacznij formatować poprawnie kod to się dowiesz dla czego.
Mam wrażenie że zabrakło Ci podstaw...
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Mam wrażenie że zabrakło Ci podstaw...
Ale jakie wrazenie... przeciez to oczywiste wink.gif

@MESSIAH skoro fetch zwraca ci tablice, to nie jest ci potrzebna zadna petla by dobrac sie do jej elementow od razu.
Rownie dobrze mogles zaraz po fetch zrobic:
$id['użytkownik']
$id['hasło']

Po drugie
= - przypisanie
== - porownanie
Na chwile obecną Twoj IF źle działa

Po trzecie: widze masz w 4 literach nasze uwagi i nadal generujesz polskie znaki w nazwach np. kolumn. Powinnismy zaczac olewac ciebie tak jak ty nas...

Po czwarte: lektury obowiązkowe:
http://php.net/manual/en/language.types.array.php
http://php.net/manual/en/function.var-dump.php
Temat: Jak poprawnie zada pytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Coś Ty się tak nospor tych polskich znaków uczepił? Mało kto tak robi, fakt, ale technicznie jest to dozwolone (nawet linkowałem mu wtedy dokumentację w tym zakresie). Jak chłopak chce niech używa. Byle pamiętał poprawnie to quotować.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poniewaz jak nagle koles zmieni baze, np wrzuci na serwer, moze dostać zonka i zaraz znowu bedzie trul na forum ze mu nie dziala...
Stosowanie polskich liter tak czy siak predzej czy później spowoduje kolejne nieprzewidziane problemy. Chocby w sytuacji jak jakims cudem nasz podopieczny wyląduje w miedzynarodowej firmie. Lepiej dla niego by sie pozbyl zlego nawyku póki ma czas.
Poza tym on te polskie znaki uzywa by zapobiegac atakom z USA co samo w sobie jest warte wypominania w kazdym poscie wink.gif
I nie pisz jakbym to tylko ja sie uczepil, bo wiele osob w innych tematach dalo mu jasno do zrozumienia ze robi błąd stosujac polskie litery, a on nadal to robi. Lekcewazy nasze rady i jednoczesnie przychodzi po kolejne. Nie uwazasz ze to troche dziwne?

ps: no i najwazniejsze:
jak ktos inny (kolejny swiezak) zobaczy jego posty to pomysli, ze to standard i tez zacznie uzywac polskich znakow. Dlatego wazne jest by taki swiezak zobaczyl, ze to jednak nie do konca takie fajne jest.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Daimos
post
Post #8





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


No to chyba żart jest, że ktoś broni polskich znaków? Specjalnie trolują? W ogóle używanie swojego języka w kodzie?
Ruszcie głową, już pomijając problemy, jakie z tego wynikają, to jak można pisać np.:
  1. <?
  2. if($zielony === true)
  3. {
  4. while($czerwony)
  5. {
  6.  
  7. }
  8. }

Od takiej składni jest żółwik i jest sensowny, polecam, bo wszystko można pisać po polsku.

Ten post edytował Daimos 14.07.2015, 09:37:35


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
KsaR
post
Post #9





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Takze polecam pisac kod po angielsku.

Tak programisci moga sie lepiej uczyc angielskiego jesli nie umieja za dobrze lub odswiezac pamiec tongue.gif.

Wszystko jedno w jakim by nie bylo napisane tak jak pisal @Comandeer chwila w tłumaczu i i tak masz na ojczysty.

@MESSIAH smile.gif
W polsce tez sa hakerzy wbrew pozorą.
Jeśli ktoś by atakował twoje projekty to zakładam że pierw polacy chyba że masz miedzy narodowa strone.

Na poczatku pisalem zmienne/funkcje po polsku (bez polskich znakow bo wtedy jeszcze nie wiedzialem ze mozna)
Robilem tak bo latwiej bylo zrozumiec mi kod.
Teraz jednak kod rozumiem i grzechem dla mnie jest pisanie po polsku tongue.gif.
Tylko opoznialbym sie bardziej itp z angielskiego biggrin.gif.

Ten post edytował Ksar 14.07.2015, 12:30:39


--------------------
Go to the top of the page
+Quote Post
MESSIAH :)
post
Post #10





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 14.07.2015, 09:03:50 ) *
Ale jakie wrazenie... przeciez to oczywiste wink.gif

@MESSIAH skoro fetch zwraca ci tablice, to nie jest ci potrzebna zadna petla by dobrac sie do jej elementow od razu.
Rownie dobrze mogles zaraz po fetch zrobic:
$id['użytkownik']
$id['hasło']

Po drugie
= - przypisanie
== - porownanie
Na chwile obecną Twoj IF źle działa

Po trzecie: widze masz w 4 literach nasze uwagi i nadal generujesz polskie znaki w nazwach np. kolumn. Powinnismy zaczac olewac ciebie tak jak ty nas...

Po czwarte: lektury obowiązkowe:
http://php.net/manual/en/language.types.array.php
http://php.net/manual/en/function.var-dump.php
Temat: Jak poprawnie zada pytanie

Przepraszam za moje zachowanie smile.gif zachowałem się jak gówniarz smile.gif A tak na poważnie ja się uczę dopiero co więc szału nie ma i nie ukończyłem źadnych szkół to jest moje hobby. Chcę zobaczyć na własnej skórze jak to jest z PL vs EN

Cytat(viking @ 14.07.2015, 09:24:28 ) *
Coś Ty się tak nospor tych polskich znaków uczepił? Mało kto tak robi, fakt, ale technicznie jest to dozwolone (nawet linkowałem mu wtedy dokumentację w tym zakresie). Jak chłopak chce niech używa. Byle pamiętał poprawnie to quotować.

Niestety podczas blindowania PDO nie mogłem użyć polskich nazw bo wywala błąd
Cytat
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined


Cytat(nospor @ 14.07.2015, 09:32:34 ) *
Poniewaz jak nagle koles zmieni baze, np wrzuci na serwer, moze dostać zonka i zaraz znowu bedzie trul na forum ze mu nie dziala...
Stosowanie polskich liter tak czy siak predzej czy później spowoduje kolejne nieprzewidziane problemy. Chocby w sytuacji jak jakims cudem nasz podopieczny wyląduje w miedzynarodowej firmie. Lepiej dla niego by sie pozbyl zlego nawyku póki ma czas.
Poza tym on te polskie znaki uzywa by zapobiegac atakom z USA co samo w sobie jest warte wypominania w kazdym poscie wink.gif
I nie pisz jakbym to tylko ja sie uczepil, bo wiele osob w innych tematach dalo mu jasno do zrozumienia ze robi błąd stosujac polskie litery, a on nadal to robi. Lekcewazy nasze rady i jednoczesnie przychodzi po kolejne. Nie uwazasz ze to troche dziwne?

ps: no i najwazniejsze:
jak ktos inny (kolejny swiezak) zobaczy jego posty to pomysli, ze to standard i tez zacznie uzywac polskich znakow. Dlatego wazne jest by taki swiezak zobaczyl, ze to jednak nie do konca takie fajne jest.

Niestety praca w jakiej kolwiek firmie nie jest realna gdyż na rozmowie o podstawach bym poległ. Przed napisaniem tutaj tematu dokładnie googluje problem i szukam na SOF tam są eksperci którzy wyjaśnią co i jak.


Cytat(Daimos @ 14.07.2015, 10:36:57 ) *
No to chyba żart jest, że ktoś broni polskich znaków? Specjalnie trolują? W ogóle używanie swojego języka w kodzie?
Ruszcie głową, już pomijając problemy, jakie z tego wynikają, to jak można pisać np.:
  1. <?
  2. if($zielony === true)
  3. {
  4. while($czerwony)
  5. {
  6.  
  7. }
  8. }

Od takiej składni jest żółwik i jest sensowny, polecam, bo wszystko można pisać po polsku.



--------------------
Go to the top of the page
+Quote Post
Daimos
post
Post #11





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(MESSIAH :) @ 14.07.2015, 20:45:19 ) *
Niestety praca w jakiej kolwiek firmie nie jest realna gdyż na rozmowie o podstawach bym poległ. Przed napisaniem tutaj tematu dokładnie googluje problem i szukam na SOF tam są eksperci którzy wyjaśnią co i jak.


MESSIAH, tutaj chodzi tylko o to, że właśnie się uczysz i jesteś na etapie, w którym kształtują się nawyki. Będziesz używał polskich znaków, to zobaczysz jak ciężko będzie Ci z tego wyjść. Większość programistów ma jakieś nawyki (lepsze gorsze), których nie może się oduczyć, bo nie mieli na początku takiego nospora, co pod każdym postem przypomina, żeby się ogarnąć ;)

Także teraz odpadasz na rozmowach o pracę ze względu na brak podstaw, za 2 lata odpadniesz, za złe nawyki i problem z napisaniem sensownego kodu


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ale chodzi też żeby się nauczył na przykładzie. Jeśli zrobi polskie znaki, później pojawi się jakiś błąd i będzie musiał przepisać pół systemu dobrze mu zapadnie w pamięć tongue.gif

Problemem jest że nie przeczytałeś zapewne dokumentacji i zapisujesz ąśżźć zamiast `ąśżźć`

A wracając do tematu:
  1. CREATE TABLE `ąśżźćł` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT,
  3. `ąśżź` INT(11) NOT NULL DEFAULT '0',
  4. PRIMARY KEY (`id`)
  5. )
  6. ENGINE=InnoDB
  7. ;
  8. INSERT INTO `ąśżźćł` (`id`, `ąśżź`) VALUES (1, 123);


  1. $dsn = 'mysql:host=localhost;dbname=test;';
  2. $user = 'root';
  3. $pass = 'pass';
  4.  
  5.  
  6. try {
  7. $dbh = new PDO($dsn, $user, $pass);
  8. $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  9. $dbh->exec("SET NAMES 'UTF8';");
  10. $sql = "SELECT * FROM `ąśżźćł` WHERE `ąśżź` LIKE :key";
  11. $sth = $dbh->prepare($sql);
  12. $sth->execute(array('key' => "1%"));
  13. print_r($sth);
  14. $result = $sth->fetchAll();
  15. print_r($result);
  16. } catch(PDOException $e) {
  17. echo 'Klasa PDO zwróciła wyjątek: '.$e->getMessage();
  18. }


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale chodzi też żeby się nauczył na przykładzie. Jeśli zrobi polskie znaki, później pojawi się jakiś błąd i będzie musiał przepisać pół systemu dobrze mu zapadnie w pamięć
Widzę Twoją ideą życiową jest "Mądry Polak po szkodzie"...
Na szczescie zycie tak nie musi wyglądać, niektorzy potrafią się uczyc na cudzych błędach tongue.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post
Post #14





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nie jest, ale są sytuacje w których dobrze jest się przekonać o czymś na własnej skórze. A akurat w tym wypadku nie piętnowałem używania polskich znaków bo ich stosowanie na początek wydawało się dobrą nauką poprawnego wybierania danych (i tak, w życiu mi nie przyszło do głowy żeby samemu polskie znaki w nazwach używać wink.gif ). Jeżeli zrozumie jak to działa jest szansa że nie wróci za tydzień z kolejnym pytaniem typu "wkładam stringa w kolumnę integer i nie działa".

Choć może MySQL nie jest dobrym systemem do nauki. "Błędy łyka jak pelikan".

Ten post edytował viking 15.07.2015, 10:08:55


--------------------
Go to the top of the page
+Quote Post
MESSIAH :)
post
Post #15





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Dokładnie tak. Teraz już wiem że np: nie da się użyć polskich LitSów (Liter Specjalnych) w nazwach blindowania zapytań do baz danych no chyba że edytujemy interpreter po swojemu ale na innych serwerach nasz skrypt już nie ruszy. Jednak PHP I MYSQl stworzone jest dla ENG i resztę języków maja w d...pie smile.gif nie interesują się jakimiś PL utf8. Może zmienią to w wersji PHP 10


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jednak PHP I MYSQl stworzone jest dla ENG i resztę języków maja w d...pie
I prawidlowo... Chcialbys kiedys poprawiac kod po jakimś chinczyku? Tak samo jak chinczyk nie chcialby poprawiać po Tobie tongue.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MESSIAH :)
post
Post #17





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Ładny nam się tutaj OffTop robi smile.gif BTW jest jakiś program, funkcja skrypt który przepuści zawartość naszego pliku i pousuwa LitSy i zastąpi je zwykłymi bez ogonków?

Ten post edytował MESSIAH :) 15.07.2015, 20:20:41


--------------------
Go to the top of the page
+Quote Post
Comandeer
post
Post #18





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Napisz se taki w PHP z regexami wink.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 23:13