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 1013 korisnika na forumu :: 83 registrovanih, 11 sakrivenih i 919 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: acatomic, aleksjevt, arezina, Atila919, Bojan198527, boskelazo, BSD, Cirkon, cole77, croato, Darth Malak, Demi87, DezurniOperativni, DonRumataEstorski, Dorcolac, duro1990duro, dzada, gagidjuric, Giskard, howyesno, hyla, Imperator_Aleksandr_lll, istina, jarovitt, Jaz, jodzula, Jomini, Jose, Jozo74, K-1A, kaput21, klepesina, kolle.the.kid, kozhedub, Lance Guest, Lazur_01, luka35, Marko Marković, marre, Martin543, Maruti, mean_machine, mercedesamg, MiljanXD, MiloradKomadic, Milos ZA, Mldo, mnn2, moldway, nebidrag, nuke92, OldKresoje, Orc, Pilence, PlayerOne, precan, predragc, probisic, Rale08, raster12, Rogan33, Snorks, Srky Boy, stegonosa, Szigetwar, tamno.nebo, tanakadzo, Tihi86, tomigun, Tvrtko I, US_Rank_0, vathra, VJ, Vlada1389, vuk77, wizzardone, XBMC, zeka013, ZlatniRez, Zoran1959, Zorge, zziko, 1107