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

Coluna desconhecida na 'lista de campos' quando o espaço reservado da instrução preparada está na subconsulta


Sua última edição deixou a pergunta muito clara, então tentarei uma resposta:a causa dessa diferença é o espaço reservado.

Conforme documentado aqui , os marcadores de posição só podem ser usados ​​em determinados locais da consulta. Em particular:

Agora você deve ter notado que SELECT ? as x prepara bem, mas não SELECT nr.x FROM (SELECT ? AS x) AS nr . Por que é que? Bem, isso é melhor explicado por um autor anônimo no documento do PHP , então deixe-me copiar/colar:

Então, basta colocar:porque você está usando um espaço reservado em uma subconsulta no FROM cláusula, o MySQL não pode calcular o plano de execução da consulta.

Em outras palavras, como sua consulta sempre mudará, não há "modelo" que possa ser preparado para ela.

Portanto, se você realmente quiser usar essa consulta, precisará usar uma consulta normal (não preparada) ou retornar às instruções preparadas emuladas do PDO.

Dito isto, por favor, considere as várias alternativas oferecidas na seção de comentários. Existem soluções muito melhores para o que você está tentando alcançar.