mysql SELECT upit i konkatekacija stringa

mysql SELECT upit i konkatekacija stringa

offline
  • PoP  Male
  • Ugledni građanin
  • Pridružio: 17 Apr 2003
  • Poruke: 420
  • Gde živiš: Pozega

Pozdrav. Radim diplomski na temu ciji je jedan segment php&mysql. Imam jednu liniju koda koji radi ali mi bas nije jasno zasto je tako. A ne bih bas da se obrukam da me pitaju "a zasto to ..." da ne znam a iskreno i radoznao sam. Smile
Dakle rec je o ovome:
 $sql="SELECT * FROM ".$arr_action[0]." WHERE city='$arr_action[1]'";
Ono sto je jasno je da ja vrsim konkatekaciju stringa i za SELECT * FROM lepim prvu promenljivu zatim dodajem WHERE citi= i dodajem drugu ali je stvar u tome sto tu konkatekaciju vrsim na 2 razlicita nacina.
Moje je pitanje zasto je to tako?
Zasto ne mogu ovako:
 $sql="SELECT * FROM ".$arr_action[0]." WHERE city=".$arr_action[1];
ili ovako:
 $sql="SELECT * FROM '$arr_action[0]' WHERE city='$arr_action[1]'";

Nesto sam gledao ovde onde trazeci neko objasnjenje ali nisam nista nasao, sve se svodi na ovo:
"SELECT * FROM Persons WHERE FirstName='Peter'"
sto ce reci u svim primerima po tutorijalima svi parametri su konstantni stringovi pa ne mogu iz toga nista da naucim...
Unapred hvala na odgovoru!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3763
  • Gde živiš: 127.0.0.1

Ispravno bi bilo ovako:

 $sql="SELECT * FROM `" . $arr_action[0] . "` WHERE city='" . $arr_action[1] . "'";

odnosno, na primeru:

"SELECT * FROM `Persons` WHERE FirstName='Peter'"

Da objasnim: ako string (Peter) koji koristis da nadjes neki unos u bazi ne stavis izmedju apostrofa

"SELECT * FROM `Persons` WHERE FirstName=Peter"

SQL smatra da to nije string nego ime kolone u SQL bazi, i dobices sledecu gresku:

MySQL said ::#1054 - Unknown column 'Peter' in 'where clause'

dok ako stavis:

"SELECT * FROM 'Persons' WHERE FirstName='Peter'"

dobices sledecu gresku:

MySQL said ::#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Persons' WHERE FirstName='Peter'
LIMIT 0, 30' at line 1


jer se imena tabela ne stavljaju izmedju apostrofa. Mozes da ih ostavis bez ikakvih oznaka, ili da stavis ` ispred i iza (npr `ime_tabele`). Znak ` nije apostrof, vec znak koji se dobija pritiskom na taster levo od 1 na tastaturi.



offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Što se same konkatenacije tiče, nije bitno koju koristiš. Tj. kad u okviru stringa staviš: "fdgdfgdfgd ... $promenljiva ... gslkks", php će automatski zameniti $promenljiva vrednošću te promenljive kao i kada bi stavio "...".$promenljiva."...".
Samo pazi na one apostrofe kod sql-a o kojima je Rastafarii pisao.

offline
  • PoP  Male
  • Ugledni građanin
  • Pridružio: 17 Apr 2003
  • Poruke: 420
  • Gde živiš: Pozega

Hvala ljudi na brzim odgovorima Smile
Ovo sa ` i ' cini mi se ne bih u zivotu video da mi ne rece. Smile

Ko je trenutno na forumu
 

Ukupno su 2775 korisnika na forumu :: 75 registrovanih, 4 sakrivenih i 2696 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 015, 04bokibole, A.R.Chafee.Jr., ajo baba, Alexandar-1973, ArmFPGA, BBCRF, blatruc82, Boris90, BOXRR, C-Gun, cemix, Ciri1994, comi_pfc, dekan.m, Djokislav, Dogma21, dusanobr, dushan, Electron, FileFinder, FOX, Gaga_89, GandorCC, goxin, GT, halkin gol, iceburn, Ivica1102, Jakonjveliki, Jaxupa, Jose, KAIS, Kaplar2, king111, Koplje, laurusri, Lotus, Marko Marković, MB120mm, Metanoja, Miki281, mikrimaus, Milan A. Nikolic, milenko crazy north, milutin134, MiroslavD, mist-mist, MK10, Mrav Obrad, nelezele, Nikola Galovic, operniki, Pekman, Pikac-47, RiV, S-lash, samocitam, sekretar, Semberija, shaja1, shiro, shlauf, Sirius, Smiljkovich, synergia, tomigun, tomo2, Vanderx, vathra, Vatreni Zmaj, vobo, VojaeZ, xZippox, zillbg