sql >> Database teknologi >  >> RDS >> Mysql

PDO:Send en MySQL-funktion til bindValue/bindParam

Nej. En forespørgselsparameter erstatter kun en enkelt konstant værdi. For eksempel en numerisk konstant eller bogstavelig streng eller dato.

Alt andet -- kolonnenavne, tabelnavne, SQL-nøgleord, funktioner, udtryk -- skal være i SQL-strengen på parsetidspunktet.

Om din kommentar:

Du bør forstå, at parametre ikke er bare en bekvemmelighed at interpolere ekstra strenge i din SQL. PREPARE er analog med en kompileringsfase for Java eller C#, hvorimod EXECUTE er analog med at køre den kompilerede kode.

Forberedelsestid er, når RDBMS udfører syntakskontrol og også validering af referencer. Den skal give en fejl, hvis du navngiver en tabel, der ikke eksisterer, eller aktiverer en funktion, der ikke eksisterer.

Du kan ikke sende tabelnavne eller funktionskald som parametre, fordi RDBMS'et så ikke ville være i stand til at validere disse referencer på forberedelsestidspunktet. Du bør ikke være i stand til at bruge en forespørgselsparameter til at ændre syntaksen for sætningen eller introducere ugyldige tabeller eller funktioner.

Så parameterpladsholderen skal være et irreducerbart syntaktisk element, der aldrig er en ugyldig reference, dvs. en enkelt bogstavelig værdi -- et tal eller en streng.



  1. MYSQL SELECT rang af bruger (mere end x og mindre end y)

  2. Opretter MySQL Workbench automatisk indekser til fremmednøgler?

  3. Sådan gør du dette i Laravel, underforespørgsel hvor i

  4. INDSÆT I .. PÅ DUBLIKAT NØGLOPDATERING for flere elementer