sql_magic f-ja

sql_magic f-ja

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

Evo jedne male, ali korisne funkcije koju sam napisao pre neki dan kad mi je zatrebala, pa reko da je podelim, mozda i vama zatreba:

<?php /**  * Prepares and execute a sql statement. If id is provided, execute UPDATE,  * if not execute INSERT, if type setted as del execute DELETE.  *  *  @usage string sql_magic( string $table, array $data [, string $type] )  *  @type options [null, del]  *  @example:  *      $data = array('id'=>'1','name'=>'Some name');  *      $table = 'users';  *      if(sql_magic($table,$data)) echo 'data sucessfully updated';  *  *  @author "Boban Karišik" <karisikb@gmail.com>  */ function sql_magic($table, $data, $type = null) {     if($type == 'del') {             foreach($data as $key=>$value) {             $qstr[] = "`".$key."` = '".mysql_real_escape_string($value)."'";         }         $qstr   = @implode(" AND ",$qstr);         return (mysql_query("DELETE FROM `".$table."` WHERE ".$qstr)) ? true : false;             } else {             foreach($data as $key=>$value) {             ($key == 'id') ? $str = "`".$key."`='".mysql_real_escape_string($value)."'" : $qstr[] = "`".$key."` = '".mysql_real_escape_string($value)."'";         }         $qstr   = @implode(",",$qstr);                 if(!empty($str)) {             return (mysql_query("UPDATE `".$table."` SET ".$qstr." WHERE ".$str)) ? true : false;         } else {             return (mysql_query("INSERT INTO `".$table."` SET ".$qstr)) ? true : false;         }             } } ?>

Evo i malog objasnjenja.
Recimo imate tabelu u bazi koja se zove users i ona ima sledeca polja:
id, uname, fname, lname, gender

Napravili ste formu sa kojom neko treba da se registruje i u njoj imate polja fname, uname i lname

znaci imate sada stvoren neki niz u post variabli
$_POST['fname'] = 'First Name';
$_POST['lname'] = 'Last Name';
$_POST['uname'] = 'test';

sta vi radite, pozovete f-ju sql_magic('users',$POST); - ona ce proveriti i ocistiti pokusaje sql injection-a i izvrsiti insert,
INSERT INTO `users` SET `fname`='$_POST['fname']' ...

da ste u kom slucaju imali i setovani $_POST['id'] f-ju bi izvrsila update po datom id-u (WHERE `id`='$_POST['id']')

Da li ce to biti $_POST ili neki drugi niz, to je na vama, $_POST obicno sadrzi i submit dugme, pa ako njega prosledite sigurno ce biti vracen false, jer submit kolonu nemate u tabeli...

recimo da imate niz ovako neki
$data['fname'] = 'First Name';
$data['uname'] = 'test';
sql_magic('users',$data,'del');

izvrsice se sledeci upid:
DELETE FROM `users` WHERE `fname`='First Name' AND `uname`='test';


Nadam se da je sada malo jasnije (ako nije bilo jasno)...


POzdrav.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 1003 korisnika na forumu :: 49 registrovanih, 11 sakrivenih i 943 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: 357magnum, A.R.Chafee.Jr., aramis s, bankulen, Bobrock1, Boris90, brundo65, CHARLIE JA., darkangel, Darko8, Denaya, Djokkinen, DonRumataEstorski, Dorcolac, dule10savic, elenemste, Frunze, goxin, ivan1973, JOntra, Karla, kjkszpj, kobaja77, Kubovac, kuntalo, KUZMAR, kybonacci, laurusri, Lieutenant, ljubacv, mercedesamg, Mercury, mile23, milenko crazy north, nenooo, panzerwaffe, pein, pirke96, Pohovani_00, procesor, raptorsi, raykan, Ripanjac, RJ, ser.hill, Shinobi, Srky Boy, vathra, YugoSlav