Mysql
 sql >> база данни >  >> RDS >> Mysql

Каква е разликата между наклонените черти на PHP и mysql(i)_escape_string?

Първо:не използвайте mysql_escape_string , той е отхвърлен (по причина)!

Ако трябва да поддържате наследено приложение, което се свързва с базата данни чрез mysql разширение (което е оттеглено ), използвайте mysql_real_escape_string вместо. В противен случай превключете незабавно към mysqli , където подготвените оператори и свързаните параметри осигуряват по-стабилен механизъм за избягване на въвеждането на потребителя.

Въпреки това, отговорът може да бъде намерен, като прочетете описанието на mysql_real_escape_string и addslashes :

Разлика №1

addslashes не знае нищо за кодирането на връзката на MySql. Ако му предадете низ, съдържащ байтове, представляващи кодиране, различно от кодирането, използвано от връзката MySql, той с радост ще избяга всички байтове със стойностите на знаците ' , " , \ и \x00 . Това може да не е същото като всички знаци ' , " , \ и \x00 ако използвате кодиране, различно от 8-битово кодиране и UTF-8. Резултатът ще бъде, че низът, получен от MySql, ще бъде повреден.

За да задействате тази грешка, опитайте да използвате iconv за да преобразувате вашата променлива в UTF-16 и след това да я екранирате с addslashes . Вижте какво получава вашата база данни.

Това е една от причините addslashes не трябва да се използва за бягство.

Разлика №2

За разлика от addslashes , mysql_real_escape_string също така избягва символите \r , \n и \x1a . Изглежда, че тези знаци също трябва да бъдат екранирани, когато се говори с MySql, в противен случай резултатът може да бъде неправилно оформена заявка

Това е другата причина, поради която addslashes не трябва да се използва за бягство.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате и конфигурирате MySQL в Ubuntu

  2. Избиране на записи по дата ->=СЕГА(), MySQL

  3. Добавяне на прекъсване на ред в MySQL INSERT INTO text

  4. използвате PHP за създаване на HTML таблица от MSQL заявка, без дублиращи се редове?

  5. Грешка на пакети извън реда при извикване на MySQL stored proc