![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 19 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cześć, czytałem trochę dziś o PDO i postanowiłem użyć go w skryptach. Nie jestem jednak pewny czy dobrze wszystko zrozumiałem i napisałem, więc dobrze by było gdyby ktoś to sprawdził i poprawił, bądź pokazał jak napisać to lepiej. Przykładowy kod: rejestracja.
Z tego co wyczytałem używając bindValue nie muszę już używać na zmiennych innych funkcji typu: stripslashes itp., ponieważ ona sama przed tym zabezpiecza. Może ktoś dokładniej sprecyzować jak to jest? |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Daaawno było na przedszkolu cokolwiek z wyjątkami jako struktury kontrolne, na plus.
Cytat Nie jestem jednak pewny czy dobrze wszystko zrozumiałem i napisałem, więc dobrze by było gdyby ktoś to sprawdził i poprawił, bądź pokazał jak napisać to lepiej. Przykładowy kod: rejestracja. A nie działa? (IMG:style_emoticons/default/tongue.gif) Cytat Z tego co wyczytałem używając bindValue nie muszę już używać na zmiennych innych funkcji typu: stripslashes itp., ponieważ ona sama przed tym zabezpiecza. Może ktoś dokładniej sprecyzować jak to jest? Zgadza się. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 19 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
To, że działa nie znaczy że jest dobrze : )
Przede wszystkim nie bardzo wiem jak mam zliczać ilość zwróconych wierszy w zapytaniu. Fakt, że w tamtym kodzie to działało i pokazywało, że np. taki nick jest już zajęty. Ale np. w tym fragmencie kodu już działa źle. Loguje każdego jak leci : )
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
w zapytaniu daj jeszcze limit 1 to szybciej zwróci wynik jeśli znajdzie takiego urzytkownika a i tak ma być jeden... po wykonaniu zapytania [$wynik->execute();] obiekt $wynik ma w odpowiedzi jakiś wynik... i np.: $wynik=$wynik->fetch(); jeśli bedziesz miał zalogowanego urzytkownika zwróci Ci tablicę asocjacyjną oraz odpowiednio pola numeryczne kolejno do asocjacyjnej - ja u siebie akurat mam na tablicy asocjacyjnej ale patrząc na Twoje zapytanie bedzie lepiej skożystać z numerycznej i wracając do tego co napisałem wcześniej:
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Sposób z wyciąganiem jednego rekordu przy sprawdzaniu są dane/nie jest tu najlepszy.
Ale jeśli chcesz najszybciej sprawdzać ilość rekordów z zapytania, to wykonaj dodatkowe FOUND_ROWS - poczytaj, co do czego. Swoją drogą, lepiej dla Ciebie najpierw zwalidować formularz i dopiero wtedy katować bazę. ;] |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 19 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Brakuje mi tu po prostu funkcji typu mysql_num_rows(), ale wyczytałem wczoraj, że wcale nie jest ona tak dobra jak się z początku wydaje. W sumie mogę, więc zliczać ilość zwróconych wierszy na kilka sposobów:
I znów nie pasuje mi kilka rzeczy: Podobno nie da się wykonać drugiego zapytania bez zamknięcia pierwszego za pomocą closeCursor(). A ja mam dwa zapytania pod rząd i to działa. Więc jak to w końcu jest? Chciałbym aby zapytanie oprócz tego że zlicza mi wybrane rekordy, zwracało mi także inne pola. Niby mógłbym wykonać dwa zapytania: jedno z COUNT, a drugie pobierające wszystkie rekordy, ale jak to zrobić w jednym zapytaniu? Teraz wyświetla mi tylko dane z pierwszego wiersza (nie wiem dlaczego) i oczywiście sumę, a ja chciałbym dane z wszystkich wierszy. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Podobno nie da się wykonać drugiego zapytania bez zamknięcia pierwszego za pomocą closeCursor(). A ja mam dwa zapytania pod rząd i to działa. Więc jak to w końcu jest? : Cytat PDOStatement::closeCursor() frees up the connection to the server so that other SQL statements may be issued, but leaves the statement in a state that enables it to be executed again. Cytat Niby mógłbym wykonać dwa zapytania: jedno z COUNT, a drugie pobierające wszystkie rekordy, ale jak to zrobić w jednym zapytaniu? Teraz wyświetla mi tylko dane z pierwszego wiersza (nie wiem dlaczego) i oczywiście sumę, a ja chciałbym dane z wszystkich wierszy. Wyciąga tak dlatego, gdyż count jest funkcją agregującą. Hmm, a found_rows Ci nie pasuje...? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 19 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Wyciąga tak dlatego, gdyż count jest funkcją agregującą. Hmm, a found_rows Ci nie pasuje...? Może być, o count pytałem tak z ciekawości. Dzięki za pomoc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 21:57 |