Visualizzazione risultati 1 fino 3 di 3

Discussione: mysql errore che non riesco ad inviduare

  1. #1
    Guest

    Predefinito mysql errore che non riesco ad inviduare

    Ciao ragazzi,

    devo inserire dei dati riguardanti una casa presi da una form abbastanza grande in un database, nella tabella case.
    La query che viene eseguita è:
    Codice PHP:
    $queryProva = "INSERT INTO case VALUES(NULL,'email@virgilio.it','$luogo','$indirizzo','$tipologia','$stanzeMatrimoniali','$stanzeSingole','$stanzeDoppie','$stanzeTriple','$divani','$lettiCastello','$maxOspiti','$bagni','$docce','$giardino','$terrazzo','$prezzoBassaStagione','$prezzoAltaStagione','$inizioBassaStagione','$fineBassaStagione','$inizioAltaStagione','$fineAltaStagione','$minGiorni','$maxGiorni','$casaLibera','$descrizione','".$nomiFile[0]."','".$nomiFile[1]."','".$nomiFile[2]."', '".$nomiFile[3]."','".$nomiFile[4]."','".$nomiFile[5]."','".$nomiFile[6]."')";
    E questo è l'errore che ottengo:

    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 'case VALUES(NULL,'email@virgilio.it','palermo','via bla bla','baita','2','2','0'' at line 1

    Prima di eseguirla mi sono fatto stampare la query, che è questa:
    INSERT INTO case VALUES(NULL,'email@virgilio.it','palermo','via bla bla','baita','2','2','0','0','0','0','6','2','2',' si','si','0','0','non usata','non usata','non usata','non usata','2','15','si','descrizione prova','immagini/foto3.JPG','immagini/foto4.JPG','vuoto', 'vuoto','vuoto','vuoto','vuoto')

    Purtroppo non riesco ad inviduarlo, non è un problema di virgole, cosa può essere? Grazie
    Ultima modifica di dreadnaut : 31-10-2012 alle ore 16.37.15 Motivo: + tag [code]

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Per cominciare, invece di uscire dalla stringa per l'array $nomiFile, puoi usare le parentesi graffe, così:
    Codice PHP:
    $var = "stringa che contiene {$nomiFile[1]} ed altro";
    L'errore ti viene dato perché case è una parola chiave in SQL, e se vuoi usarla come nome di una tabella o di una colonna, devi inserirla fra apici inversi:
    Codice PHP:
    $query = "SELECT * FROM `case`";
    In generale, è cosa saggia usare sempre gli apici, nel caso vengano introdotte nuove parole chiave e codice funzionante si rompa così, senza avvertimento.
    Ultima modifica di dreadnaut : 31-10-2012 alle ore 16.43.37

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,766

    Predefinito

    Oltre a quello detto da dreadnaut, occhio a:

    -possibili SQL injection, se i dati provengono da form

    -i numeri (se son salvati in formato numerico sul database), andrebbero passati appunto come numeri, e non come stringhe (quindi senza apici).

    Ciao!

Regole di scrittura

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