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

Каква е вътрешността на подготвеното изявление?

Ако се опитвате да направите това, което изглежда, че се опитвате... не се опитвайте да правите това.

Подготвеното изявление не е това (или поне не е това, което трябва да бъде).

Вашият клиентски код не трябва да се опитва да интерполира стойности в низа на заявката, за да генерира "завършена" заявка, която да изпрати на сървъра за изпълнение. Това е рецепта за бедствие, да не говорим за фалшиво чувство за сигурност.

Подготвените оператори доставят изявлението с ? заместители към сървъра такъв, какъвто е, където сървърът "подготвя" оператора за изпълнение... и след това клиентът изпраща параметрите на сървъра ("свързване" на параметрите) за изпълнение. Правейки това, сървърът никога няма да бъде объркан относно „коя част е SQL“ и „коя част са данните“, което прави инжектирането на sql невъзможно и прави избягването и дезинфекцията на данните ненужни.

Ако не общувате директно с C-API, тогава трябва да извикате методите във вашата библиотека, които ви предоставят същите функции.




  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. ColdFusion - Вмъкване на арабски/персийски знаци в mysql

  3. JPA не се актуализира колоната с клас Converter

  4. Как да настроите AUTO_INCREMENT от друга таблица

  5. Деактивиране на проверките на външни ключове в командния ред