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 1086 korisnika na forumu :: 33 registrovanih, 7 sakrivenih i 1046 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, amaterSRB, Boris90, darkangel, DonRumataEstorski, draganl, Gargantua, HrcAk47, Još malo pa deda, Kibice, ladro, lcc, Marko Marković, Mediator, mikrimaus, milos97, mrvica78, nebkv, Panter, panzerwaffe, Parker, pein, Shinobi, Sirius, stegonosa, uruk, VJ, vladom6, voja64, Volkhov-M, wolverined4, YU-UKI, šumar bk2