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

PDO:Предайте MySQL функция на bindValue/bindParam

Не. Параметърът на заявката замества само една константна стойност. Например числова константа или литерал низ или дата.

Всичко друго – имена на колони, имена на таблици, SQL ключови думи, функции, изрази – трябва да бъде в SQL низа по време на синтактичен анализ.

Относно вашия коментар:

Трябва да разберете, че параметрите не просто удобство за интерполиране на допълнителни низове във вашия SQL. PREPARE е аналогичен на фазата на компилиране за Java или C#, докато EXECUTE е аналогичен на изпълнението на компилирания код.

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

Не можете да предавате имена на таблици или извиквания на функции като параметри, защото тогава RDBMS няма да може да потвърди тези препратки по време на подготовка. Не трябва да можете да използвате параметър на заявка, за да промените синтаксиса на израза или да въведете невалидни таблици или функции.

Така че заместващият параметър трябва да бъде несводим синтактичен елемент, който никога не е невалидна препратка, т.е. една литерална стойност – число или низ.



  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 Show Grants за всички потребители

  2. Mysql AVG да игнорира нула

  3. MySQL конектор за Python

  4. MYSQL:Как да копирам цял ред от една таблица в друга в mysql, като втората таблица има една допълнителна колона?

  5. Mysqldump:създаване на имена на колони за вмъквания при архивиране