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

Защо използването на подготвен изявление на mysql е по-сигурно от използването на обикновените escape функции?

Важен момент, който мисля, че хората тук пропускат, е, че с база данни, която поддържа параметризирани заявки, няма "бягство", за което да се притеснявате. Машината на базата данни не комбинира свързаните променливи в SQL израза и след това анализира цялото нещо; Свързаните променливи се съхраняват отделно и никога не се анализират като общ SQL израз.

Оттам идват сигурността и бързината. Машината на базата данни знае, че заместителят съдържа само данни, така че никога не се анализира като пълен SQL израз. Ускоряването идва, когато подготвите изявление веднъж и след това го изпълните много пъти; каноничният пример е вмъкване на множество записи в една и съща таблица. В този случай машината на базата данни трябва да анализира, оптимизира и т.н. само веднъж.

Сега един проблем е с библиотеките за абстракция на база данни. Понякога го фалшифицират, като просто вмъкват свързаните променливи в SQL израза с правилното избягване. Все пак това е по-добре, отколкото да го правите сами.



  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 таблицата с някакъв префикс

  2. Използване на JDeveloper с MySQL база данни и Oracle Database на AWS RDS, част 2

  3. как да добавя супер привилегии към базата данни на mysql?

  4. Как да изчислим разликата между две времеви марки в MySQL

  5. Поддържане на реда в MySQL IN заявка