Ben parametreleri bağlamak eğer mysql_real_escape_string kullanmak zorunda mı?

1 Cevap php

Ben aşağıdaki kodu vardır:

function dbPublish($status)
{
 global $dbcon, $dbtable;

 if(isset($_GET['itemId']))
 {
  $sqlQuery = 'UPDATE ' . $dbtable . ' SET active = ? WHERE id = ?';
  $stmt = $dbcon->prepare($sqlQuery);
  $stmt->bind_param('ii', $status, $_GET['itemId']);
  $stmt->execute();
  $stmt->close();
 }
}

Ben bu durumda mysql_real_escape_string gerekir ya ben iyiyim musunuz?

1 Cevap

Eğer hazırlanmış deyimleri kullanırken Hayır, size değer kaçmak zorunda değilsiniz kendinizi (i.e. no you don't need to call mysqli_real_escape_string) : DB motoru kendisi yapacak.

(Actually, if you were calling mysql_real_escape_string ve bağlı parametreleri kullanarak, dizeleri iki kez kaçtı olacaktı - harika olmaz ki: ) ... Her yerde karakterleri kaçan ile bitirmek istiyorum


As a sidenote : your values are passed as integers (as indicated by the 'ii'), so you wouldn't have to call mysql_real_escape_string, even if you were not using prepared statements : as its name indicates, this function is used to escape... strings.

Tamsayılar için, ben genellikle sadece benim SQL sorguları içine enjekte verileri gerçekten tamsayılar emin olmak için intval kullanın.

(But, as you are using prepared queries, once again, you don't have to do that kind of escaping yourself)