Должен ли я избежать ожидаемого целочисленного значения с помощью mysql_real_escape_string или я могу просто использовать (int) $ ожидаетсяinteger - PullRequest
7 голосов
/ 05 декабря 2011

безопасно ли использовать cast (int) вместо escape?

class opinion
{
   function loadbyopinionid($opinionid){
      $opinionid=(int)$opinionid;
      mysql_query("select * from fe_opinion where opinionid=$opinionid");
      //more code 
   }
}

Ответы [ 2 ]

13 голосов
/ 05 декабря 2011

mysql_real_scape_string для STRINGS .это не сделает целое число «безопасным» для использования.Например,

$safe = mysql_real_escape_string($_GET['page']);

НИЧЕГО не будет делать там, где

$_GET['page'] = "0 = 0";

, потому что там нет метасимволов SQL.Ваш запрос в итоге будет выглядеть примерно так:

SELECT ... WHERE somefield = 0 = 0

Однако выполнение intval () преобразует этот 0=0 в обычный 0.

0 голосов
/ 05 декабря 2011

Да, это безопасно, но вы должны избегать значения в запросе ..where мненияid = '$ мнение о' '

КСТАТИ (1) Никогда не используйте Select * Решение Выберите поле, поле 2 ....

(2) (int) $ foo меньше перфомантеров, чем intval ($ foo)

...