Навеяло парой топиков... Кто чем пользуется? Что по вашему лучше? Для затравочки статья http://www.phpfaq.ru/slashes#off
addshasles не учитывает специфику mysql, mysql_escape_string содержит потенциальные баги и поэтому deprecated, функция mysql_real_escape_string единственно правильный вариант.
Имею мнение, что волшебные кавычки - зло. В принципе, функции addslashes хватает, если работать в UTF-8.
Ensiferum потому что не всякие данные идут в базу, чтобы их эскейпить. как заметил Vladson, надо эскейпить только те данные, которые идут в базу, а эскейпить всё подряд - глупо.
Эскейпить надо не данные, данные вообще менять нельзя. Никогда и никаким образом... © http://dkflbk.nm.ru/php_basic_err_1.html Так что bin2hex рулит
Это сурьёзный аргумент! Ну допустим нет PDO в PHP, да и в 5.3 стандартный mysql перебрали так, что по скорости соревнуется с расширениями. туше!
ctype_digit лучше для тех случаях где надо положительное число, и numeric где отрицательные тоже (в том примере ctype лучше, но когда я ту фигню писал я забыл об этом, а править лень) А по теме я кстати bin2hex использовал в некоторых скриптах Один из примеров тут http://www.php.ru/forum/viewtopic.php?p=244105#244105 Код (Text): mysql_query("INSERT INTO `guestbook` VALUES (NOW(), '$username', 0x".bin2hex($_POST['text']).")");
Ensiferum Код (Text): Строка из секции from кодируется в экранированную SQL-строку, принимая во внимание текущую кодировку данного соединения. Результат помещается в секцию to с добавлением концевого нулевого байта. Кодируются следующие символы: NUL (ASCII 0), `\n', `\r', `\', `'', `"' и Ctrl-Z это во-первых, во-вторых mysql_real_escape_string() это функция не для безопасности, а для корректной обработки запроса, никто не может поручиться что в следующей версии мускла не добавятся еще какие-то символы, которые mysql_real_escape_string() будет подхватывать, в то время как самопал нужно будет допиливать. тема непонятна, как можно сравнивать спец-функцию базы (которая может меняться в версиях продукта) и addslashes?
antonn однако их сравнивают. не раз натыкался здесь же в разных топиках. так шо всё свалил в кучу и вопрошаю
Просто не все читают справку то именно делает mysql_real_escape_string() и часто вопрос звучит "как сделать кавычки в тексте для запроса", имхо. К тому же если какие-то балбесы сравнивают их это не значит что мы должны как попугаи повторяться =)
PHP: <?php private function prepareParams($params) { if (is_array($params)) { foreach ($params as &$param) { $param = $this->prepareParams($param); } } else { if (is_string($params)) { return "'" . $this->real_escape_string($params) . "'"; } elseif (is_bool($params)) { return $params ? 1 : 0; } elseif (is_null($params)) { return 'NULL'; } } return $params; }