mysql_real_escape_string()

mysql_real_escape_string ( $uzklausa [, resource $mid] )
Sutvarkomi kintamieji MySQL užklausoje taip, kad netrukdytų atlikti užklausos MySQL serveriui.

$uzklausa - Nurodoma nesutvarkyta užklausa kurią reikia sutvarkyti.
$mid - MySQL serverio prisijungimo ID.
Grąžinama sutvarkyti užklausa jei pavyko, kitu atveju FALSE.

Panaudojimas

Žemiau pateiktas pavyzdys parodo kaip niekada nedarykite norėdami gauti duomenis iš MySQL pasitelkdami vartotojo įvestais duomenimis.

<?php
// Siunčiama užklausa į MySQL serverį patikrinti ar ra toks vartotojas su slaptažodžiu
$uzklausa = "SELECT * FROM vartotojai WHERE vartotojas='{$_POST['vartotojas']}' AND slaptazodis='{$_POST['slaptazodis']}'";
mysql_query($uzklausa);
 
// Mes nepatikrinome gautų duomenų iš $_POST['slaptazodis'], čia gali būti bet kas ko norės vartotojas! Pavyzdys:
$_POST['username'] = 'coders';
$_POST['password'] = "' OR ''='";
 
// Tai reiškia užklausa atrodys taip:
echo $query;
// Užklausa: SELECT * FROM vartotojai WHERE vartotojas='coders' AND slaptazodis='' OR ''=''
?> 

Žemiau pateiktas pavyzdys kaip geriausiai atlikti šią situaciją:

<?php
 
if (isset($_POST['pavadinimas']) && isset($_POST['aprasymas']) && isset($_POST['id'])) {
    // Prisijungiame prie MySQL serverio
 
    $mid = mysql_connect('mysql_host', 'vartotojas', 'slaptazodis');
 
    if(!is_resource($mid)) {
 
        echo "Nepavyko prisijungti prie MySQL serverio\n";
 
  } else {
 
        if(get_magic_quotes_gpc()) {
            $pavadinimas        = stripslashes($_POST['pavadinimas']);
            $aprasymas = stripslashes($_POST['aprasymas']);
        } else {
            $pavadinimas        = $_POST['pavadinimas'];
            $aprasymas = $_POST['aprasymas'];
        }
 
        // Sudarome saugią užklausą
        $uzklausa = sprintf("INSERT INTO products (`pavadinimas`, `aprasymas`, `id`) VALUES ('%s', '%s', %d)",
                    mysql_real_escape_string($pavadinimas, $mid),
                    mysql_real_escape_string($aprasymas, $mid),
                    $_POST['id']);
 
        mysql_query($uzklausa, $mid);
 
        if (mysql_affected_rows($link) > 0) {
            echo "Prekė įterpta\n";
        }
    }
} else {
    echo "Prašome užpildyti formą tinkamai\n";
}
?>