Mysql
 sql >> Database >  >> RDS >> Mysql

Colonna sconosciuta nell'"elenco dei campi" quando il segnaposto dell'istruzione preparata è nella sottoquery

La tua ultima modifica ha chiarito la domanda, quindi proverò a rispondere:la causa di questa differenza è il segnaposto.

Come documentato qui , i segnaposto possono essere utilizzati solo in determinati punti della query. In particolare:

Ora potresti aver notato che SELECT ? as x si prepara bene, ma non SELECT nr.x FROM (SELECT ? AS x) AS nr . Perché? Bene, questo è meglio spiegato da un autore anonimo sul documento di PHP , quindi fammi copiare/incollare:

Quindi metti semplicemente:perché stai usando un segnaposto in una sottoquery nel FROM clausola, MySQL non può calcolare il piano di esecuzione della query.

In altre parole, poiché la tua query cambierà sempre, non esiste un "modello" che può essere preparato per essa.

Pertanto, se si desidera davvero utilizzare questa query, è necessario utilizzare una query normale (non preparata) o ripristinare le istruzioni preparate emulate di PDO.

Detto questo, per favore, considera le varie alternative offerte nella sezione commenti. Ci sono soluzioni molto migliori per ciò che stai cercando di ottenere.