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 1237 korisnika na forumu :: 39 registrovanih, 5 sakrivenih i 1193 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: A.R.Chafee.Jr., Areal84, bigfoot, Bobrock1, Centauro, crnogorac, dika69, Dorcolac, GandorCC, Georgius, HrcAk47, ILGromovnik, Karla, Kubovac, Lieutenant, lord sir giga, Lucije Kvint, Luka Blažević, marsovac 2, MIg, milenko crazy north, minmatar34957, miodrag, mkukoleca, nedeljkovici, novator, pein, Pikac-47, Rakenica, RJ, royst33, ruma, shone34, Singidunumac, stegonosa, vandrej, Vlad000, wolf1, zziko