sql >> Database >  >> RDS >> Mysql

PDO:geef een MySQL-functie door aan bindValue/bindParam

Nee. Een queryparameter vervangt slechts één constante waarde. Bijvoorbeeld een numerieke constante of letterlijke tekenreeks of datum.

Al het andere -- kolomnamen, tabelnamen, SQL-sleutelwoorden, functies, expressies -- moet tijdens het parseren in de SQL-tekenreeks staan.

Opnieuw uw opmerking:

U moet begrijpen dat parameters niet . zijn gewoon een gemak om extra strings in uw SQL te interpoleren. PREPARE is analoog aan een compileerfase voor Java of C#, terwijl EXECUTE analoog is aan het uitvoeren van de gecompileerde code.

De voorbereidingstijd is wanneer het RDBMS de syntaxis controleert en ook de referenties valideert. Het moet een foutmelding geven als je een tabel een naam geeft die niet bestaat, of een functie aanroept die niet bestaat.

U kunt geen tabelnamen of functieaanroepen doorgeven als parameters, omdat het RDBMS deze verwijzingen dan niet kan valideren tijdens de voorbereiding. U zou geen queryparameter moeten kunnen gebruiken om de syntaxis van de instructie te wijzigen of om ongeldige tabellen of functies te introduceren.

De tijdelijke aanduiding van de parameter moet dus een onherleidbaar syntactisch element zijn dat nooit een ongeldige verwijzing is, d.w.z. een enkele letterlijke waarde -- een getal of een tekenreeks.



  1. SignalR gebruiken in een webfarm, met Sql-server als backplane

  2. Waarom scheidingsteken gebruikt met opgeslagen procedure in mysql?

  3. Hoe TAN() werkt in MariaDB

  4. Trigger om invoeging te voorkomen voor dubbele gegevens van twee kolommen