sql >> Databasteknik >  >> RDS >> Mysql

Okänd kolumn i "fältlistan" när den förberedda satsens platshållare finns i underfrågan

Din senaste redigering gjorde frågan väldigt tydlig, så jag ska försöka svara:orsaken till denna skillnad är platshållaren.

Som dokumenterats här , kan platshållare endast användas på vissa platser i frågan. I synnerhet:

Nu kanske du har märkt att SELECT ? as x förbereder fint, men inte SELECT nr.x FROM (SELECT ? AS x) AS nr . Varför är det så? Detta förklaras bäst av en anonym författare på PHPs dokument , så låt mig kopiera/klistra in:

Så enkelt uttryckt:eftersom du använder en platshållare i en underfråga i FROM kan MySQL inte beräkna exekveringsplanen för frågan.

Med andra ord, eftersom din fråga alltid kommer att ändras finns det ingen "mall" som kan förberedas för det.

Om du verkligen vill använda den här frågan måste du därför använda en normal (icke-förberedd) fråga, eller slå tillbaka på PDO:s emulerade förberedda uttalanden.

Med det sagt, snälla, överväg de olika alternativen som erbjuds i kommentarsfältet. Det finns mycket bättre lösningar för det du försöker uppnå.




  1. Hur väljer jag en MySQL-databas att använda med PDO i PHP?

  2. Få antalet dagar mellan två datum i Oracle, inklusive datumen

  3. SQL Server 2008 Rad Infoga och uppdatera tidsstämplar

  4. MySQL &PHP Parameter 1 som resurs