[PHP][MySQL]Zmienna PHP w zapytaniu SQL |
[PHP][MySQL]Zmienna PHP w zapytaniu SQL |
8.09.2016, 15:43:38
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 17.08.2016 Ostrzeżenie: (0%) |
Witam, mam następujący kod:
DatabaseManager.class.php
ModuleLoader.class.php:
Problem pojawia się w 18 linii pliku ModuleLoader.class.php z samym zapytaniem. Nie ważne w jaki sposób próbuje tą zmienną włożyć do zapytania uaktywnia się if z 23 linii pliku DatabaseManager.class.php świadczący o złym sformułowaniu zapytania. Jeżeli to samo zapytanie występuje bez zmiennej, załóżmy: "SELECT * FROM users WHERE id=1" To wszystko działa jak powinno (tj. uaktywnia się if z 37 linii (DatabaseManager.class.php) jeżeli wyszukanie nic nie znalazło lub else z 39 linii (DatabaseManager.class.php) jeżeli zapytanie coś wyszukało). Problem pojawia się właśnie w chwili gdy chce do zapytania włożyć zmienną php. Próbowałem na różne sposoby: 1. "SELECT * FROM users WHERE username='$login'" 2. 'SELECT * FROM users WHERE username="$login"' 3. "SELECT * FROM users WHERE username='".$login."'" 4. 'SELECT * FROM users WHERE username="'$login'"' 5. "SELECT * FROM users WHERE username='{$login}'" 6. 'SELECT * FROM users WHERE username="{$login}"' 7. "SELECT * FROM users WHERE username='.{$login}.'" 8. 'SELECT * FROM users WHERE username=".{$login}."' 9. "SELECT * FROM users WHERE username='%$login%'" Niestety żaden ze sposób nie przyniósł żadnego lepszego efektu. |
|
|
8.09.2016, 15:51:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Ta twoja klasa jest do kitu. real_escape_string powinien escapować część zapytania czyli wartość wkładaną. Do tego $SQL może zwrócić null i nawet o tym nie będziesz wiedział.
-------------------- |
|
|
9.09.2016, 20:50:22
Post
#3
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) |
|
|
|
9.09.2016, 20:54:06
Post
#4
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) |
Na sql'u też się nie znasz, skoro chcesz wciskać string do zapytania bez apostrofów / cudzysłowów.
Ten post edytował kapslokk 9.09.2016, 20:54:38 |
|
|
10.09.2016, 09:15:08
Post
#5
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) |
Ciekawe forum, widzę że łatwiej jest komuś wytknąć błąd niż dać rzeczową poradę które może na kierunkować na rozwiązanie. Tak nie znam sie i nie jestem programistą, interesuje sie tym od niedawna w wolnym czasie w ramach hobby.
|
|
|
10.09.2016, 09:29:12
Post
#6
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) |
Wytknalem Ci błąd, bo wprowadzasz innych użytkowników w błąd, a rzeczowej porady udzielił już viking i więcej do dodania już tutaj nie ma
|
|
|
10.09.2016, 11:30:32
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Żeby nie było że mało rzeczowo. Weź sobie jakiś orm typu Propel i zobacz jak to tam wygląda. Najlepiej użyj zewnętrzne rozwiązanie albo nawet goły kod PDO / Mysqli. Poczytaj o bindowaniu, zobacz w dokumentacji jak to wygląda. To co tu przedstawiłes nadaje się tylko do kosza.
-------------------- |
|
|
17.09.2016, 06:22:44
Post
#8
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 4 Dołączył: 3.01.2010 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 23:40 |