Visualizzazione risultati 1 fino 4 di 4

Discussione: Errore mysql

  1. #1
    Guest

    Predefinito Errore mysql

    Susate per il titolo, ma proprio non ci sò fare! Questo è il mio codice, ma mi dà un 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 'to, date, message, object) VALUES (1, 3, 21/05/10, Ciao. Come stai? Messagg' at line 1


    Come posso fare a risolverlo?

    Questo è il mio codice php!

    Codice PHP:
    $name = $_POST['nome'];
    $testo = $_POST['testo'];
    $oggetto = $_POST['oggetto'];
    $mittente = $_SESSION['id'];
    $query= "SELECT id FROM `users` WHERE username = '$name'";
    $risultato = mysql_query($query) or die (mysql_error());
    $row = mysql_fetch_array($risultato);
    $destinatario = $row['id'];
    $date = (date("d-m-y"));
    $query = "INSERT INTO messages (a, to, date, object, message) VALUES ('$destinatario', '$mittente', '$date', '$oggetto', '$testo')"; //inserisco nel db il messaggio
    $risultato = mysql_query($query) or die (mysql_error());
    echo
    '<font color="black">Il messaggio è stato inviato!</font><br><br>'; //comunico che il messaggio è stato inviato con successo
    E questo il mio codice mysql:

    CREATE TABLE IF NOT EXISTS `messages` (
    `id` int(5) NOT NULL auto_increment,
    `a` int(5) NOT NULL default '0',
    `to` int(5) NOT NULL default '0',
    `date` int(30) NOT NULL default '0',
    `message` text NOT NULL,
    `object` varchar(25) NOT NULL default '',
    `value` tinyint(1) NOT NULL default '1',
    PRIMARY KEY (`id`)
    Ultima modifica di enkantar : 21-05-2010 alle ore 19.31.02

  2. #2
    Guest

    Predefinito

    Io proverei a fare l'escape di tutti i dati inviati. Ho avuto un problema simile di recente e la soluzione è stata proprio questa. Inoltre - ma non sono pienamente sicuro che questo sia un errore - la parola "date" è una keyword di MySQL, in quanto corrisponde ad un tipo di campo. Quindi, giusto per sicurezza, potresti mettere gli apici ` anche nella query di inserimento, come hai fatto in quella di selezione.
    Codice PHP:
    $name = mysql_real_escape_string($_POST['nome']);
    $testo = mysql_real_escape_string($_POST['testo']);
    $oggetto = mysql_real_escape_string($_POST['oggetto']);
    $mittente = mysql_real_escape_string($_SESSION['id']);
    $query= "SELECT id FROM `users` WHERE username = '$name'";
    $risultato = mysql_query($query) or die (mysql_error());
    $row = mysql_fetch_array($risultato);
    $destinatario = $row['id'];
    $date = (date("d-m-y"));
    $query = "INSERT INTO messages (`a`, `to`, `date`, `object`, `message`) VALUES ('$destinatario', '$mittente', '$date', '$oggetto', '$testo')"; //inserisco nel db il messaggio
    $risultato = mysql_query($query) or die (mysql_error());
    echo
    '<font color="black">Il messaggio è stato inviato!</font><br><br>'; //comunico che il messaggio è stato inviato con successo
    Ciao!
    Ultima modifica di RigheDiCodice : 21-05-2010 alle ore 19.41.49

  3. #3
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    `date` l'hai definito int, invece lo puoi definire tipo date e poi:
    Codice PHP:
    $query = "INSERT INTO messages (a, to, date, object, message) VALUES ('$destinatario', '$mittente', CURDATE(), '$oggetto', '$testo')";
    EDIT:
    Risposta al tuo edit2.
    Oppure lo puoi definire varchar e fai l'inserimento come avevi fatto.
    Ultima modifica di andreafallico : 21-05-2010 alle ore 20.20.53

  4. #4
    Guest

    Predefinito

    Adesso funziona tutto, ma c'è un unico piccolo problema: la data non la inserisce correttamente.. Perchè?

    EDIT: Mi hanno già risposto, scusate!

    EDIT2: Ma CURDATE() mi dà la data in format yyyy-mm-gg. Io la voglio gg-mm.yyyy
    Ultima modifica di enkantar : 21-05-2010 alle ore 20.14.37

Regole di scrittura

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