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: 3760
  • 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 1216 korisnika na forumu :: 131 registrovanih, 12 sakrivenih i 1073 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4thFlavian, 9191vs, A.R.Chafee.Jr., Alen-Delon-u-boji, aleph_one, aramis s, Automaticar, babaroga, BB, bobo85, Bobrock1, bojank, boromir, bpop, brufen, bufanje, burevestnik, Buzdovan, Bvp, C-Gun, CHARLIE JA., cifra, cuvarkuca, darkojovxp, deLacy, Despot1, DJUNTA, Djuza, Dogma21, dradex, Duk011, Dukelander, dusan.l, Dzigy, Ercomero, flash12, Fog of War, grenadir, GrobarPovratak, Hans Gajger, Insan, ivanb, jalos, Jeremiah, jodzula, Kajzer Soze, Karaula, keyz, kibihrchak, komsija1, Kredit, kripo, Le Banner, Leonov, leptirleptir, Lester Freamon, LostInSpaceandTime, lucianovercetti, M1los, M74AB3, Maki1981, Mali Rambo, mat, mercedesamg, Mi lao shu, Miki01, milenko crazy north, MiloradKomadic, Milos1389, Milos82, milos97, mino bosanac, Mis uz pusku, Mrav Obrad, mrm, mux, Myamoto Musashi, N.e.m.a.nj.a., Naj-Turs, nenad81, nerevar, nnovakis, opt1, orjen, paladin71, Pekman, pera bager, petrovicrs, Povratak1912, radza1, RajkoB, raketaš, rakivan, rambod, RILE-NS, Rothmans, Sevetar, shadower78, Sharpshooter, Sirius, Slingshot, slono, stalja, StalniPromatrač, strn, styg, taomaster, Tas011, taz1cl, tesa, Troja, Underwood, vathra, vazduh, VOŽD, vuksa72, Vzor50, W123, wizzardone, wolverined4, x011, x9, xAlex2, YugoSlav, zdrebac, zemljanin, Zgembo78, zil10, zubri, zule2, zziko