Centar za edukaciju-BiH



#1 19.08.2020-12:36
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 4,042


Subject: PHP PDO ne prihvaca ime table kao parametar
Trebalo mi je jedno dobrih tjedan dana da ovo otkrijem.

ovo ne radi

DownloadIzvorni kod (Text):
  1. $sql='INSERT INTO :imeTable (red.broj, grad, stanovnika)
  2.         VALUES (:redbroj, :grad, :stanovnika)
  3.         ON DUPLICATE KEY UPDATE
  4.         stanovnika=:stanovnika
  5.         ';
  6.                                                                
  7. $stmt = $pdo->prepare($sql);
  8. $stmt->bindValue(':imeTable', $imeTable);
  9. $stmt->bindValue(':redbroj', $redbroj);
  10. $stmt->bindValue(':grad', $grad);
  11. $stmt->bindValue(':stanovnika', $stanovnika);
  12. $stmt->execute();      


jednom je zxz reao da pristupimo sql upitu kao obicnom stringu kojega mozemo kao hocemo, ocemo ga sprijeda ili straga razdvojiti pa iz toga proizlazi da ovo dolje radi:

DownloadIzvorni kod (Text):
  1. $sql='INSERT INTO ' . $imeTable . ' (red.broj, grad, stanovnika)
  2.         VALUES (:redbroj, :grad, :stanovnika)
  3.         ON DUPLICATE KEY UPDATE
  4.         stanovnika=:stanovnika
  5.         ';
  6.                                                                
  7. $stmt = $pdo->prepare($sql);
  8. $stmt->bindValue(':redbroj', $redbroj);
  9. $stmt->bindValue(':grad', $grad);
  10. $stmt->bindValue(':stanovnika', $stanovnika);
  11. $stmt->execute();      

Život je moja domovina.
↑  ↓

#2 19.08.2020-16:28
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,757


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
ovo tvoje nije klasican string , nema nista ovakvo :stanovnika u klasican sting
↑  ↓

#3 20.08.2020-11:00
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 4,042


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Citat od Gjoreski:
ovo tvoje nije klasican string , nema nista ovakvo :stanovnika u klasican sting

ma to je samo primjer, opcenito. To je broj stanovnika.
Glavno je to da se ne prihvaca imeTable kao parametar. To sam htio reci
Život je moja domovina.
↑  ↓

#4 20.08.2020-23:21
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,341


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
ovo ON DUPLICATE KEY UPDATE mislim da je visak odnsno nema smisla koliko se sjecam jer kod PDO kada naidje na gresku procedura staje tako da je ovo djaba napisano.
Mogu provjeriti jer nisam 100% siguran.

Moze se napisati i ovako:
$data = [
'redbroj' => $redbroj,
'grad' => $grad,
'stanovnika => $stanovnika];
$sql = "INSERT INTO $imeTable (redbroj, grad, stanovnika) VALUES (:redbroj, :grad, :stanovnika)";
$stmt= $pdo->prepare($sql);
$stmt->execute($data);
Pozdrav
↑  ↓

#5 21.08.2020-07:49
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 4,042


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Citat od zxz:
ovo ON DUPLICATE KEY UPDATE mislim da je visak odnsno nema smisla koliko se sjecam jer kod PDO kada naidje na gresku procedura staje tako da je ovo djaba napisano.
Mogu provjeriti jer nisam 100% siguran.

Moze se napisati i ovako:
$data = [
'redbroj' => $redbroj,
'grad' => $grad,
'stanovnika => $stanovnika];
$sql = "INSERT INTO $imeTable (redbroj, grad, stanovnika) VALUES (:redbroj, :grad, :stanovnika)";
$stmt= $pdo->prepare($sql);
$stmt->execute($data);

znaci ti koristis mysqli, a ne pdo?
Život je moja domovina.
↑  ↓

#6 22.08.2020-09:09
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,341


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Da koristim najcsce mysqli PDO koristim za zabelu sesije.
Pozdrav
↑  ↓

#7 23.08.2020-10:04
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 4,042


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Citat od zxz:
Da koristim najcsce mysqli PDO koristim za tabelu sesije.

prenosis imena tabela sesijom, $_SESSION['imeTable'] ?
Život je moja domovina.
↑  ↓

#8 23.08.2020-19:36
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,341


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Ne ne $_SESSION je globlna variabla odnosno super globalna koja se upisuje u tabelu sesije.
E ja imam zasebnu klsu PDO konekcije za ovu tabelu jer ja hocu da mi je dostupna i napr kada se registrujes onda upsujem i tvoj id u tu tabelu a moze i jos stosta.
Mozemo ovo obraditi u zaebnoj temi ako hoces.
Pozdrav
↑  ↓

#9 24.08.2020-08:09
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 4,042


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Netreba, nisam još na toj razini znanja tako da mislim da nebi pola toga shvatio.
Život je moja domovina.
↑  ↓

#10 24.08.2020-08:40
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,341


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Da bar napomenem.
Ti mozes koristiti globalne variable $_SESSION samo neces imati svoju tablicu gdje to mozes vidjeti.
Pozdrav
↑  ↓

#11 24.08.2020-11:42
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 4,042


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
treba biti oprezan sa sql kao stringom

ovo ne radi zbog toga jer nakon FROM nema razmaka
'SELECT MAX(raspored_datum) AS raspored_datum FROM' .$imeTable);

prije izvodenja sql izgleda ovako:
sql=SELECT MAX(raspored_datum) AS raspored_datum FROMimeTable

ovo radi jer ima razmak nakon FROM
'SELECT MAX(raspored_datum) AS raspored_datum FROM ' .$imeTable);

prije izvodenja sql izgleda ovako
sql=SELECT MAX(raspored_datum) AS raspored_datum FROM imeTable
Život je moja domovina.
↑  ↓

#12 24.08.2020-19:21
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,341


Subject: Re: PHP PDO ne prihvaca ime table kao parametar
Hehe nema tu puno filozofije.
Imas variablu i imas string te vrijednost variable i string cine SQl string.
Posto je SQL sa string Znaci moramo ga oiviciti znacima navoda.
Imamo dvije vrste znaka navoda koje funkcinisu i to sa dvije crtice ili klasicni znak navoda i sa jednom ili kako mi zovemo apostrof.
U PHP ako u strngu oivicenom pravim znakom navoda upisemo neku variablu PHP ce je prepoznati,
Primjer:
$imetabele="Tabela1";
$sql="SELECT * FROM $imetabele";
Kao reziltat dobit cemo string
SELECT * FROM Tabela1
Ukoliko pak oivicimo string sa apostrofom tada PHP ne prepoznaje variaablu pa Bi to izgledalo ovako:
$sql='SELECT * FROM $imetabele';
Kao reziltat dobit cemo string
SELECT * FROM $imetabele
Znaci neispravno.
Morali bi pisati sql na sledeci nacin:
$sql='SELECT * FROM ' . $imetabele;
Na isti nacin mozemo napisati i sa pravim znakom navoda.
$sql="SELECT * FROM " . $imetabele;
Stim kada pisemo ovako moramo voditi racuna o jos jednoj stvari tj. o razmaku izmedju rijeci u ovom slucaju konkretno
izmedju rijeci FROM I vrijednosti iz variable imetabele.
Mozemo iz from dodati jedno prazno mjesto ili pak u imenu tabele dodati ispred jedno prazno mjesto:
$imetabele=" Tabela1"
Pozdrav
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 12.05.2021-22:10.