[ dsivic @ 21.07.2008. 12:07 ] @
| Prilikom unosa u bazu podataka ovo mi nije radilo:
Code:
class clan
{
private $nick;
private $pass;
private $email;
private $data = array();
private $err = array();
public function setData($data)
{
if(is_array($data))
$this->data = $data;
}
public function InsertData()
{
$sql =
"
INSERT INTO clan SET
nick = '$this->nick',
lozinka= '$this->pass',
ime = '$this->data[ime]',
prezime = '$this->data[prezime]'
" ;
}
}
U tabelu se upisu podaci :
"
----------------------------------
ime | prezime
----------------------------------
Array[ime] | Array[prezime]
----------------------------------
" itd...
a kada uradim ovo sa promjenjivom $this->data onda radi :
$data = $this->data;
INSERT INTO clan SET
nick = '$this->nick',
lozinka = '$this->pass',
ime = '$data[ime]',
prezime = '$data[prezime]'
Moze li mi neko objasniti zasto. |
[ Miroslav Ćurčić @ 21.07.2008. 12:31 ] @
Code:
...
ime = '".$this->data['ime']."',
prezime = '".$this->data['prezime']."'
...
Kad bi koristio neki editor s ispravnim PHP higlight-om video bi da parče "[ime]" nije ušlo kao deo promenljive kroz takvo direktno ubacivanje u "..." string.
To nema veze s klasom već sintaksom u radu s stringovima.
[ dsivic @ 21.07.2008. 12:42 ] @
Tako radi, ali nije mi jasno zasto ne radi na prvi nacin. PHP ne izbacuje nikakvu gresku.
a i izvan klase u kodu rade oba nacina.
[ Nemanja Avramović @ 21.07.2008. 13:11 ] @
Izvan klase nemaš referenciranje na objekat ($this->) već samo promenljivu ($promenljiva) pa zato radi. U klasi bi trebalo da radi ovako:
"SELECT * FROM {$this->data['tabela']} WHERE blabla..."
[ Miroslav Ćurčić @ 21.07.2008. 13:28 ] @
Takvo direktno ubacivanje u string ima neka ograničenja, i ti si upravo naleteo na jedno.
Zapamti da kod ovakvog ubacivanja promenljivoj možeš dodati samo jedan parametar, da ga tako nazovemo,
a ostali parametri se tretiraju kao deo glavnog stringa.
Dakle, promenljiva $this je prošla s parametrom data ali se nastavak ignoriše,
isto tako ne bi prošlo ubacivanje $Polje[0][0] gde bi ignorisao poslednje [0].
Možda jeste glupo ograničenje, ali šta je - tu je.
Još jedan bug koji sam primetio, ako u glavnom stringu imaš neki ne-printabilni karakter (prikazuje kao "kockica" jer ga nema u fontu) onda ćeš dobiti grešku ako iza njega bilo šta ubacuješ na ovaj način,
dok ubacivanje sa prekidom (npr: ...".$A."...) radi bez problema.
[ dsivic @ 21.07.2008. 14:46 ] @
Hvala puno. Uvijek se ima sta nauciti.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.