Visualizzazione risultati 1 fino 4 di 4

Discussione: [SQL] Errore sintassi

  1. #1
    L'avatar di memai
    memai non è connesso Utente
    Data registrazione
    10-02-2010
    Residenza
    Bergamo
    Messaggi
    175

    Predefinito [SQL] Errore sintassi

    Esempio del mio problema:
    io creo un database con una tabella che chiamo: immagini con 4 campi, l'id, img , desc e l'email

    Poi creo un form con 3 input: file per l'immagine , text per la descrizione e ancora text per l'email

    Codice PHP:
    //immagine presa con l'iput file che si chiama file e questo va bene
    $immagine=$_FILES['file']['name'];
    $desc=$_POST['desc'];
    $email=$_POST['email'];

    //poi invio questi dati nel database come faccio di solito (sempre funzionato)

    mysql_query("INSERT INTO immagini(id, img, desc, email)
    VALUES (NULL, '
    $immagine', '$desc', '$email')");

    Perchè mi dà questo errore?

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc, email) VALUES(NULL , nome_immagine
    ,

    Ci son così da troppo tempo sopra questa cosa che avrei bisogno di una mano vostra
    Ultima modifica di javascripter : 05-07-2011 alle ore 09.26.40 Motivo: +[php],[quote]

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Di solido la sintassi:

    Codice:
    INSERT INTO tabella ( nomi_campi ) VALUES ( valori_campi )
    si usa quando non devi valorizzare tutti i campi, nel tuo caso potresti utilizzare, visto che valorizzi tutti i campi, questa sintassi:

    Codice:
    INSERT INTO tabella VALUES (valori campi)
    Ma credo sia la stessa cosa, l'errore credo sia quel null.

    Cmq, l'id suppongo che lo metti null perché è un autoincrement, giusto? se si prova a definire la query senza definire il campo id:

    Codice PHP:
    mysql_query("INSERT INTO immagini (img, desc, email)
    VALUES ('
    $immagine', '$desc', '$email')");
    Cosi dovrebbe funzionare, al meno che i campi non siano tutti di tipo testo.
    Ultima modifica di sevenjeak : 05-07-2011 alle ore 09.26.17

    Sevenjeak
    Software developer and much more

  3. #3
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    La keyword DESC, è riservata. Serve per ordinare i dati estratti in ordine decrescente.
    Per questo motivo ricevi l'errore!

    Puoi risolvere usando i caratteri di escape `nome_campo`, oppure cambiando nome al campo.

    Poi, se il campo id è auto_increment, non devi preoccuparti di inserire alcun valore. Nemmeno NULL, perché ci pensa direttamente mysql a valorizzarlo.
    Semplicemente, non scriverlo nella query.

    Quindi, nel caso non volessi cambiare nome al campo desc, la query corretta è:
    Codice PHP:
    mysql_query("INSERT INTO immagini (img, `desc`, email)
    VALUES ('
    $immagine', '$desc', '$email')");

  4. #4
    L'avatar di memai
    memai non è connesso Utente
    Data registrazione
    10-02-2010
    Residenza
    Bergamo
    Messaggi
    175

    Predefinito

    Non comprendo l'utilizzo delle ` anche se però mi stupisce che inserendole mi funzioni la query, però sono confuso, perchè funziona così e non come ho sempre fatto? Anche se io non volessi scrivere nulla nei campi di testo mi si dovrebbe salvare come valore nullo e quindi vuoto, comunque grazie a tutti ho sistemato anche se, boh.

    PS: c'è una combinazione per fare `? Quale è?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •