Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO:Passar uma função MySQL para bindValue/bindParam


Não. Um parâmetro de consulta substitui apenas um único valor constante. Por exemplo, uma constante numérica ou string literal ou data.

Qualquer outra coisa - nomes de colunas, nomes de tabelas, palavras-chave SQL, funções, expressões - deve estar na string SQL no momento da análise.

Re seu comentário:

Você deve entender que os parâmetros não apenas uma conveniência para interpolar strings extras em seu SQL. PREPARE é análogo a uma fase de compilação para Java ou C#, enquanto EXECUTE é análogo a executar o código compilado.

O tempo de preparação é quando o RDBMS faz a verificação de sintaxe e também a validação de referências. Deve dar um erro se você nomear uma tabela que não existe ou invocar uma função que não existe.

Você não pode passar nomes de tabela ou chamadas de função como parâmetros porque o RDBMS não poderá validar essas referências no tempo de preparação. Você não deve poder usar um parâmetro de consulta para alterar a sintaxe da instrução ou introduzir tabelas ou funções inválidas.

Portanto, o placeholder do parâmetro deve ser um elemento sintático irredutível que nunca é uma referência inválida, ou seja, um único valor literal -- um número ou uma string.