Pogledajte određenu poruku
Staro 18. 03. 2007.   #9
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Citat:
Originalno napisao Ivan
mysql_query() ne podrzava visetruke kverije u jednom pozivu ali npr u SQLlite i PostgreSQL funkcijama je ovo moguce izvesti.
ok, tacno je to sto si rekao, mada je ovo kontradiktorna prica, posto sa SQLlite ili PGSQL-om svakako neces ni koristiti mysql_real_escape string

Evo da rezimiram, za one sa jeftinijim ulaznicama

1. Ako je ikako moguce koristiti prepared statements. Ne samo sto je sigurnije, vec je i mnogo efikasnije kad se isti SQL izvrsava vise puta, samo se menjaju parametri. Mysql drajveri to ne podrzavaju, ali mysqli, pdo, postgres podrzavaju, tako da samo php4 + mysql kombinacija imaju problem.

2. Ako vozimo php4 i mysql (jos uvek najcesca varijanta) onda je potrebno uraditi sledece:
  • mysql_real_escape_string - za obicne upite
  • mysql_real_escape_string($sql) + addcslashes($sql, '%_') - za upite unutar LIKE izraza
Primer: SELECT * FROM tabela WHERE a=$a AND b LIKE '$b';
Ovde $a treba escapeovati samo sa mysql_real_escape_string, dok za $b moramo da koristimo i addcslashes

i to je to... a evo i moja funkcija za escape koja mislim da lepo sljaka:
PHP kôd:
/**
 * Escapes special characters in a string for use with mySQL queries 
 * WARNING: MySQL connection is required for this function !!  (or you'll get a E_WARNING and FALSE as the result)
 * @author Ivan Dilber (aka ivanhoe)
 * 
 * @param string $str String to be escaped
 * @param boolean $using_like Do we need to escape extra characters (% and _) for strings used inside LIKE expression
 * @return string
 */
function escape($str$using_like=false) {
    if( 
get_magic_quotes_gpc() )  // if already escaped
            
$str stripslashes($str);
    
$str mysql_real_escape_string($str);

    return ( 
$using_likeaddcslashes($str'%_') : $str );

__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 18. 03. 2007. u 01:34.
ivanhoe je offline   Odgovorite uz citat