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 1072 korisnika na forumu :: 33 registrovanih, 9 sakrivenih i 1030 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Alibaba1981, aramis s, bladesu, bojank, brundo65, Bubimir, cavatina, Darko8, dehhhhi, Denaya, Dorcolac, Dukelander, ILGromovnik, Kubovac, laurusri, LUDI, Metanoja, Miki01, milimoj, nikoladim, novator, pein, saputnik plavetnila, Saratoga, sevenino, t84dar, vathra, Vatreni Zmaj, vrag81, zlaya011, |_MeD_|, 79693