Nauči SQL, potom osnove programiranja i načina kako se niske predstavljaju u PHP-u.
Ako je polje ip_adresa u bazi numeričko onda ne može da sadrži tačke. Ako je polje tekstualno, onda u upitu moraš da vrednost obuhvatiš navodnicima (bilo jednostrukim, bilo dvostrukim, kako ti je već zgodno).
Kada postoji linija
$ip = '192.168.0.1'; ona kaže da je vrednost promenljive $ip
192.168.0.1 (navodnici PHP-u kažu da počinje i završava niska, nisu deo niske). Kako u nisci 192.168.0.1 nema nikakvih promenljivih rezultat je isti i da smo napisali
$ip = "192.168.0.1";. Ponoviću, razlika između dvostrukih i jednostrukih navodnika za oznaku početka/kraja niske je što dvostruki svaku promenljivu koju prepoznaju unutar zamenjuju njenom vrednosti.
Sada treba da napravimo nisku koju će PHP da pošalje MySQL-u kao upit. Polje je tekstualno, pa ga obuhvatamo navodnicima. MySQL ne razlikuje jednostruke/dvostruke navodnike. Taj upit koji se šalje pomoću funkcije mysql_query serveru treba da glasi
SELECT signal FROM signali WHERE ip_adresa='192.168.0.1'. Mogu da dodam razmake između delova upita, osim unutar ovih jednostrukih navodnika.
' 192... (razmak posle navodnika) kaže MySQL-u da traži slog sa atributom ip_adresa jednak razmak 1 9 2, a takav verovatno ne postoji.
Da bismo to postigli, koristeći dvostruke navodnike ubacićemo vrednost promenljive
$ip u njenu mesto u tom upitu.
Code (php):
mysql_query("SELECT signal FROM signali WHERE ip_adresa='$ip' ");
Mogli smo da koristimo i jednostruke navodnike sa spajanjem tačkom, ali to u ovom slučaju izgleda ružnije.
Code (php):
mysql_query('SELECT signal FROM signali WHERE ip_adresa=\'' . $ip . '\' '); // ovde su tri znaka \ pa ' i ponovo '
Šta je sada ovo
\'? Pa jednostavno, treba nam taj jednostruki navodnik u rezultirajućoj nisci. Kako ovde jednostruki navodnik označava početak i kraj niske, treba nam način da kažemo kako ovaj navodnik je samo navodnik, a ne oznaka za kraj. Zato koristimo izbegavanje (engl. escape) znakom \. Nakon toga sledi kraj niske, pa nastavljanje za vrednost promenljive $ip (192.168.0.1), pa početak treće niske koja daje onaj jednostruki navodnik iza ip adrese koji nam treba u SQL upitu. (Primeti da ne smem da dodam razmak između
\' i
' jer bi onda MySQL tražio vrednost razmak pa 192..., a meni treba bez razmaka!)
Ako bismo u SQL upitu koristili dvostruke navodnike umesto jednostrukih, ne treba nam izbegavanje, pa to izgleda:
Code (php):
$sql = 'SELECT signal FROM signali WHERE ip_adresa= "'. $ip . '" ';
Sada će niska upita glasiti
SELECT signal from signali WHERE ip_adresa="192.168.0.1" što možeš i da proveriš jednostavnim
echo $sql;.
[Ovu poruku je menjao Goran Rakić dana 08.08.2010. u 22:22 GMT+1]
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja