Вопрос

Так что это то, о чем мы все должны знать, и играл на мой взгляд, когда я впервые увидел это ..

я знаю это mysql_escape_string устаревают с 5,3, но какова была фактическая разница в mysql_real_escape_string.

То, что я думал, что mysql_real_escape_string точно так же, как mysql_escape_string Кроме mysql_real_escape_string Получает второй аргумент для ресурса MySQL.

Итак, я подумал, что у нее хорошо, должно быть некоторая разница относительно того, как обрабатываются строки, потому что не будет необходимости в 2 функциях.

Поэтому я думал, что разница была исключительно до локали и кодировщиков персонажей. ?

Кто-нибудь может очистить это для меня?

Это было полезно?

Решение

Разница в том, что mysql_escape_string Просто обрабатывает строку как необработанные байты, и добавляет избегание, где он считает, что это уместно.

mysql_real_escape_string, С другой стороны, использует информацию о наборе символов, используемой для подключения MySQL. Это означает, что строка убежана при правильном лечении многобайтовых символов; Т.е. он не будет вставлять сбежать символы в середине символа. Вот почему вам нужно соединение для mysql_real_escape_string; Необходимо для того, чтобы знать, как следует обрабатывать строку.

Однако вместо того, чтобы убежать, это лучшая идея использовать параметризованные запросы от библиотеки MySQLI; Ранее были ошибки в исходящей рутине, и это возможно, что некоторые могут появиться снова. Параметризация запроса намного, намного сложнее запутаться, поэтому реже вы можете получить скомпрометированную ошибку MySQL.

Другие советы

Ну ... вроде, да. Это принимает набор символов в учетной записи MySQL.

http://php.net/mysql_escape_string.

Эта функция идентична mysql_real_escape_string() Кроме этого mysql_real_escape_string() Получает обработчик подключения и ускользает на строке в соответствии с текущим набором символов. mysql_escape_string() Не принимает аргумент соединения и не уважает текущую настройку Charset.

mysql_escape_string не устарел от 5,3 но, за 4,3,0 и выше. Так что любой, использующий версию PHP выше / или 4.3.0, должен использовать mysql_real_escape_string.

При использовании php < 4.3.0, чем сделать ваш magic_quotes_gpc active от php.ini, хотя рекомендуется обновлять, но если ваш код будет иметь проблему, чем убедитесь, что вы используете, magic_quotes_gpc а также addslash функция, а не mysql_escape_string.

Теперь оба этих функция устаревают в

PHP 4> = 4.3.0 и PHP 5. Они рекомендуют использовать PDO_MySQL расширение

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top