1054 - Colonna sconosciuta 'D' in 'where clause'

Buonasera. Ho un problema con una stringa sql che spero possiate aiutarmi a risolvere. 

Devo eseguire una query per un compito :

Elenca tutti i campi delle auto alimentate a gasolio (D) che costano tra 20000 e 35000 

SELECT * FROM `vettura` WHERE `alimentazione`=D AND `prezzo`>20000 AND `prezzo`<35000

Ottengo come risposta

SELECT * FROM `vettura` WHERE `alimentazione`=D AND `prezzo`>20000 AND `prezzo`<35000 LIMIT 0, 25

Messaggio di MySQL: 

#1054 - Colonna sconosciuta 'D' in 'where clause'

Premetto che nella tabella "vettura" alla voce alimentazione  ho dato 

alimentazione varchar(11) utf8mb4_general_ci No Nessuno

ho usato le lettere D/E/B 

Ringrazio chiunque possa aiutarmi.

inviato 3 mesi fa
Masina
X 0 X

Ciao Masina,

l'errore è nel confronto "alimentazione = D"

Dato che il campo alimentazione è di tipo VARCHAR, dunque una stringa, devi inserire i valori da confrontare tra singoli o doppi apici

Inoltre l'esercizio dice di includere le auto che costano tra 20000 e 35000, quindi vanno inclusi pure gli estremi.

La query corretta è la seguente

SELECT *
FROM vettura
WHERE alimentazione = 'D'
AND prezzo >= 20000
AND prezzo <= 35000

Due consigli anche se è solo un esercizio a puro scopo didattico:

  1. Evita sempre di estrarre tutti i campi (tramite *), specifica solalmente quelli che ti servono (es. id, cilindrata).
  2. Utilizza PDO per eseguire le query oppure mysqli, in quanto puoi sfruttare le query parametriche per prevenire la SQL Injection

Ne approfitto per dirti che da alcuni mesi sto curando un sito con guide, tutorial e novità sull'ecosistema PHP.

Troverai guide per principianti e non per imparare a programmare PHP in maniera professionale partendo dalle basi.

Se ti va dacci un occhio ;)

https://guidaphp.it/

risposto 3 mesi fa
guidaphp
Grazie per la risposta e per i consigli.Masina 3 mesi fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda