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 692 korisnika na forumu :: 5 registrovanih, 0 sakrivenih i 687 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: bobomicek, Istman, Japidson, voja64, zlaya011