sql >> Databasteknik >  >> RDS >> Mysql

PDO:Skicka en MySQL-funktion till bindValue/bindParam

Nej. En frågeparameter ersätter endast ett enda konstant värde. Till exempel en numerisk konstant eller bokstavlig sträng eller datum.

Allt annat -- kolumnnamn, tabellnamn, SQL-nyckelord, funktioner, uttryck -- måste finnas i SQL-strängen vid analys.

Angående din kommentar:

Du bör förstå att parametrar inte är bara en bekvämlighet för att interpolera extra strängar i din SQL. PREPARE är analog med en kompileringsfas för Java eller C#, medan EXECUTE är analog med att köra den kompilerade koden.

Förberedelsetid är när RDBMS gör syntaxkontroll och även validering av referenser. Den måste ge ett felmeddelande om du namnger en tabell som inte finns, eller anropar en funktion som inte finns.

Du kan inte skicka tabellnamn eller funktionsanrop som parametrar eftersom RDBMS då inte skulle kunna validera dessa referenser vid förberedelsetidpunkten. Du bör inte kunna använda en frågeparameter för att ändra syntaxen för satsen eller införa ogiltiga tabeller eller funktioner.

Så parameterplatshållaren måste vara ett irreducerbart syntaktisk element som aldrig är en ogiltig referens, dvs. ett enda bokstavligt värde -- ett tal eller en sträng.



  1. phpMyAdmin på MySQL 8.0

  2. Ställ in variabel från SELECT PHP

  3. Spåra utgående anslutningar

  4. Använda Easysoft ODBC-drivrutiner med Informatica PowerCenter