sql >> Databáze >  >> RDS >> Mysql

PDO:Předejte funkci MySQL do bindValue/bindParam

Ne. Parametr dotazu nahrazuje pouze jednu konstantní hodnotu. Například číselná konstanta nebo doslovný řetězec nebo datum.

Cokoli jiného – názvy sloupců, názvy tabulek, klíčová slova SQL, funkce, výrazy – musí být v řetězci SQL při analýze.

K vašemu komentáři:

Měli byste pochopit, že parametry nejsou jen pohodlí pro interpolaci dalších řetězců do vašeho SQL. PREPARE je analogická fázi kompilace pro Java nebo C#, zatímco EXECUTE je analogická ke spuštění kompilovaného kódu.

Čas přípravy je, když RDBMS provádí kontrolu syntaxe a také validaci odkazů. Pokud pojmenujete tabulku, která neexistuje, nebo vyvoláte funkci, která neexistuje, musí to dát chybu.

Nemůžete předávat názvy tabulek nebo volání funkcí jako parametry, protože pak by RDBMS nebyl schopen ověřit tyto odkazy v době přípravy. Neměli byste mít možnost použít parametr dotazu ke změně syntaxe příkazu nebo k zavedení neplatných tabulek nebo funkcí.

Zástupný symbol parametru tedy musí být neredukovatelný syntaktický prvek, který nikdy není neplatným odkazem, tj. jedna doslovná hodnota – číslo nebo řetězec.



  1. StaleObjectStateException u vysokofrekvenčních aktualizací

  2. Jak seskupit podle user_id a objednat podle desc

  3. Vkládání dat Mysql s jednou hodnotou z jiné tabulky

  4. Najděte chybějící mezery v sekvenci mysql