Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di ada50
    Registrato dal
    Aug 2009
    Messaggi
    27

    [MySQL] Colonna sconosciuta 'DATESTAMP' in 'field list'

    Nuovo in questa sezione un ciao a tutti.
    Ho caricato sul mio PC win7 phpMyadmin per provare in locale prima che sul server alcune funzioni. Il problema è questo, ho realizzato un form d'iscrizione in php con invio dei dati a un db e relativa tabella i dati del form sono:

    nome
    cognome
    email
    verifica email
    città
    professione

    Il db l'ho nominato form_dati e la tabella dati con i campi uguali a quelli del form però ogni volta che provo il form mi ritorna un messaggio d'errore questo:

    Failed to insert data into table! Colonna sconosciuta 'DATESTAMP' in 'field list'

    Ho provato a cambiare la codifica dei caratteri nella tabella senza risultato, per maggiore chiarezza tutti i campi della tabella li ho impostati come varchar, null si, predefinito null.
    Forse sbaglio qualche passaggio o dopo la creazione del db e della tabella và fatta qualche altra operazione, forse mi sfugge qualche passaggio. Le ho provate tutte prima di chedervi aiuto.

    P.S. le impostazioni del form sono corrette completo dell' host (localhost) del nome db e tabella, user e password.
    ada50

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: [MySQL] Colonna sconosciuta 'DATESTAMP' in 'field list'

    Originariamente inviato da ada50
    Nuovo in questa sezione un ciao a tutti.
    Ho caricato sul mio PC win7 phpMyadmin per provare in locale prima che sul server alcune funzioni. Il problema è questo, ho realizzato un form d'iscrizione in php con invio dei dati a un db e relativa tabella i dati del form sono:

    nome
    cognome
    email
    verifica email
    città
    professione

    Il db l'ho nominato form_dati e la tabella dati con i campi uguali a quelli del form però ogni volta che provo il form mi ritorna un messaggio d'errore questo:

    Failed to insert data into table! Colonna sconosciuta 'DATESTAMP' in 'field list'

    Ho provato a cambiare la codifica dei caratteri nella tabella senza risultato, per maggiore chiarezza tutti i campi della tabella li ho impostati come varchar, null si, predefinito null.
    Forse sbaglio qualche passaggio o dopo la creazione del db e della tabella và fatta qualche altra operazione, forse mi sfugge qualche passaggio. Le ho provate tutte prima di chedervi aiuto.

    P.S. le impostazioni del form sono corrette completo dell' host (localhost) del nome db e tabella, user e password.
    L'errore dice che in qualche modo stai provando a leggere con una SELECT la colonna DATESTAMP mentre a DB quella colonna non esiste (per quella tabella). Controlla bene il codice scritto per leggere la tabella.

  3. #3
    Utente di HTML.it L'avatar di ada50
    Registrato dal
    Aug 2009
    Messaggi
    27
    Ciao son andato a leggermi il codice php che riporto sotto. Stranamente il programma che uso (è un wysiwyg Webbuilder) mi genera per il form il select cui ti riferivi oltre al codice del form ecco il php generato:

    Codice PHP:
     <?php
       
    function ValidateEmail($email)
       {
          
    $pattern '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
          return 
    preg_match($pattern$email);
       }

       if(
    $_SERVER['REQUEST_METHOD'] == 'POST')
       {
          
    $mailto 'info@miamail;
          $mailfrom = isset($_POST['
    email']) ? $_POST['email'] : $mailto;
          $subject = '
    Contact Information';
          $message = '
    Values submitted from web site form:';
          $success_url = '';
          $error_url = '';
          $error = '';
          $mysql_server = '
    localhost';
          $mysql_database = '
    form_dati';
          $mysql_table = '
    dati';
          $mysql_username = '
    miouser';
          $mysql_password = '
    miapassword';
          $eol = "\n";
          $max_filesize = isset($_POST['
    filesize']) ? $_POST['filesize'] * 1024 : 1024000;
          $boundary = md5(uniqid(time()));

          $header  = '
    From'.$mailfrom.$eol;
          $header .= '
    Reply-To'.$mailfrom.$eol;
          $header .= '
    MIME-Version1.0'.$eol;
          $header .= '
    Content-Typemultipart/mixedboundary="'.$boundary.'"'.$eol;
          $header .= '
    X-MailerPHP v'.phpversion().$eol;
          if (!ValidateEmail($mailfrom))
          {
             $error .= "The specified email address is invalid!\n
    ";
          }

          if (!empty($error))
          {
             $errorcode = file_get_contents($error_url);
             $replace = "##error##";
             $errorcode = str_replace($replace, $error, $errorcode);
             echo $errorcode;
             exit;
          }

          $internalfields = array ("submit", "reset", "send", "captcha_code");
          $message .= $eol;
          $message .= "IP Address : ";
          $message .= $_SERVER['
    REMOTE_ADDR'];
          $message .= $eol;
          foreach ($_POST as $key => $value)
          {
             if (!in_array(strtolower($key), $internalfields))
             {
                if (!is_array($value))
                {
                   $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
                }
                else
                {
                   $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
                }
             }
          }

          $body  = '
    This is a multi-part message in MIME format.'.$eol.$eol;
          $body .= '
    --'.$boundary.$eol;
          $body .= '
    Content-Typetext/plaincharset=UTF-8'.$eol;
          $body .= '
    Content-Transfer-Encoding8bit'.$eol;
          $body .= $eol.stripslashes($message).$eol;
          if (!empty($_FILES))
          {
              foreach ($_FILES as $key => $value)
              {
                 if ($_FILES[$key]['
    error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
                 {
                    $body .= '
    --'.$boundary.$eol;
                    $body .= '
    Content-Type'.$_FILES[$key]['type'].'name='.$_FILES[$key]['name'].$eol;
                    $body .= '
    Content-Transfer-Encodingbase64'.$eol;
                    $body .= '
    Content-Dispositionattachmentfilename='.$_FILES[$key]['name'].$eol;
                    $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['
    tmp_name']))).$eol;
                 }
             }
          }
          $body .= '
    --'.$boundary.'--'.$eol;
          mail($mailto, $subject, $body, $header);
          $search = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß", "!", "§", "$", "%", "&", "/", "\x00", "^", "°", "\x1a", "-", "\"", " ", "\\", "\0", "\x0B", "\t", "\n", "\r", "(", ")", "=", "?", "`", "*", "'", "
    :", ";", ">", "<", "{", "}", "[", "]", "~", "²", "³", "~", "µ", "@", "|", "<", "+", "#", ".", "´", "+", ",");
          
    $replace = array("ae""Ae""oe""Oe""ue""Ue""ss");
          foreach(
    $_POST as $name=>$value)
          {
             
    $name str_replace($search$replace$name);
             
    $name strtoupper($name);
             
    $form_data[$name] = $value;
          }
          
    mysql_connect($mysql_server$mysql_username$mysql_password) or die('Failed to connect to database server!
    '
    .mysql_error());
          
    mysql_query("CREATE DATABASE IF NOT EXISTS $mysql_database");
          
    mysql_select_db($mysql_database) or die('Failed to select database
    '
    .mysql_error());
          
    mysql_query("CREATE TABLE IF NOT EXISTS $mysql_table (ID int(9) NOT NULL auto_increment, DATESTAMP DATE, TIME VARCHAR(8), IP VARCHAR(15), BROWSER TINYTEXT, PRIMARY KEY (id)) TYPE=MyISAM");
          foreach(
    $form_data as $name=>$value
          {
             
    mysql_query("ALTER TABLE $mysql_table ADD $name VARCHAR(255)");
          }
          
    mysql_query("INSERT INTO $mysql_table (DATESTAMP, TIME, IP, BROWSER)
                       VALUES ('"
    .date("Y-m-d")."',
                       '"
    .date("G:i:s")."',
                       '"
    .$_SERVER['REMOTE_ADDR']."',
                       '"
    .$_SERVER['HTTP_USER_AGENT']."')")or die('Failed to insert data into table!
    '
    .mysql_error()); 
          
    $id mysql_insert_id();
          foreach(
    $form_data as $name=>$value)
          {
             
    mysql_query("UPDATE $mysql_table SET $name='".mysql_real_escape_string($value)."' WHERE ID=$id") or die('Failed to update table!
    '
    .mysql_error());
          }
          
    mysql_close();
          
    header('Location: '.$success_url);
          exit;
       }
    ?>
    Esattamente il il codice che comincia da (mysql_connect) e finisce con (foreach($form_data as $name=>$value) che sembra un doppione, tra l'altro ho provato a non creare il db è la tabella ma non funziona, è a questo che ti riferivi? Non ne capisco molto del php. Grazie
    ada50

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    La tabella dati l'hai create te? Se si hai creato questi campi?

    DATESTAMP
    TIME
    IP
    BROWSER

    La funzione che hai postato crea in automatico db e tabella dati ed aggiunge in automatico i campi del form (ho guardato alla veloce il codice ma dovrebbe essere cosi)

    codice:
     mysql_query("CREATE TABLE IF NOT EXISTS $mysql_table (ID int(9) NOT NULL auto_increment, DATESTAMP DATE, TIME VARCHAR(8), IP VARCHAR(15), BROWSER TINYTEXT, PRIMARY KEY (id)) TYPE=MyISAM");
    questa riga crea la tabella dati in automatico verificando prima che non esista già

    il primo foreach aggiunge i campi del form alla tabella che ha creato automaticamente prima, il secondo invece va a modifcare i valori del record che ha inserito dopo la compilazione del form

    In teoria se cancelli la tabella dati alla prima compilazione del form dovrebbe creare la tabella con tutti i campi correttamente, altrimenti devi aggiungere a mano i campi sopra.

    La parte che da errore è questa:

    codice:
     mysql_query("INSERT INTO $mysql_table (DATESTAMP, TIME, IP, BROWSER)
                       VALUES ('".date("Y-m-d")."',
                       '".date("G:i:s")."',
                       '".$_SERVER['REMOTE_ADDR']."',
                       '".$_SERVER['HTTP_USER_AGENT']."')")or die('Failed to insert data into table!
    '.mysql_error());
    è si blocca sulla insert quando va a inserire il valore nel campo DATESTAMP che non esiste. Per correttezza è una insert e non una select che da errore (sono due operazioni diverse)

  5. #5
    Utente di HTML.it L'avatar di ada50
    Registrato dal
    Aug 2009
    Messaggi
    27
    La tabella in mysql l'ho creata io al momento del primo post e come già sai mi dava errore in quanto il campo "DATESTAMP" non esisteva, dopo la tua prima risposta sono andato a controllarmi il codice php e in base alle tue indicazioni ho scoperto quella parte del codice da te evidenziato, ho droppato db e tabella e ho provato a vedere se creava tutto da solo, ma il risultato è stato negativo, mi dava errore "db non trovato". Ho provato allora a creare il db senza tabella, errore "tabella non trovata", quindi non prende in considerazione lo script.
    Come dicevo sto provando tutto in locale prima di caricare sul server host, è possibile che sia locahost a creare problemi? Io uso Easyphp 12.0 solo perchè il server host ha il phpmyadmin.
    ada50

  6. #6
    Utente di HTML.it L'avatar di ada50
    Registrato dal
    Aug 2009
    Messaggi
    27
    Scusa mi dispiace romperti ancora per byipassare il problema ho creato la tabella manualmente con i campi

    ID
    DATESTAMP
    TIME
    IP
    BROWSER
    come sono previsti nella query dello script. Compilando il form aggiunge in automatico i campi previsti dal form:
    NOME
    COGNOME
    EMAIL
    VERIFICA-EMAIL
    CITTA
    PROFESSIONE

    con valori varchar (255) che ho visto posso ridurre e NULL NOT NULL.

    Il problema che non leggo i valori inseriti nei campi nome, cognome ecc, ma solo NULL.

    Puoi per favore indicarmi come risolvere, ci ho provato da solo ma senza risultati.
    Un grazie in anticipo
    ada50

  7. #7
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da ada50
    Scusa mi dispiace romperti ancora per byipassare il problema ho creato la tabella manualmente con i campi

    ID
    DATESTAMP
    TIME
    IP
    BROWSER
    come sono previsti nella query dello script. Compilando il form aggiunge in automatico i campi previsti dal form:
    NOME
    COGNOME
    EMAIL
    VERIFICA-EMAIL
    CITTA
    PROFESSIONE

    con valori varchar (255) che ho visto posso ridurre e NULL NOT NULL.

    Il problema che non leggo i valori inseriti nei campi nome, cognome ecc, ma solo NULL.

    Puoi per favore indicarmi come risolvere, ci ho provato da solo ma senza risultati.
    Un grazie in anticipo
    Beh,
    se lo script che stai usando è quello di qualche post fa, stai inserendo solamente i primi 5 campi e non gli altri. Quindi è normale che siano NULL

  8. #8
    Utente di HTML.it L'avatar di ada50
    Registrato dal
    Aug 2009
    Messaggi
    27
    Si lo script è quello, come dicevo all'inizio ne so poco di php e lo script è autogenerato, come faccio ad inserire gli altri valori?
    ada50

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Puoi modificare lo script leggendoti i valori del form, anche se in teoria dovrebbe fare tutto in automatico....

    comuque per leggere i valori:

    codice:
     $nome = isset($_POST['nome']) ? $_POST['nome'] : ''; 
     $cognome = isset($_POST['cognome ']) ? $_POST['cognome '] : '';
    ripeti l'operazione per tutti i campi del form e inseriscili,ad esempio, dopo questa riga:

    $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;

    poi modifica la query di insert:


    codice:
    Da:
    
    mysql_query("INSERT INTO $mysql_table (DATESTAMP, TIME, IP, BROWSER)
                       VALUES ('".date("Y-m-d")."',
                       '".date("G:i:s")."',
                       '".$_SERVER['REMOTE_ADDR']."',
                       '".$_SERVER['HTTP_USER_AGENT']."')")or die('Failed to insert data into table!
    '.mysql_error()); 
    
    
    A:
    
    mysql_query("INSERT INTO $mysql_table (DATESTAMP, TIME, IP, BROWSER, NOEM, COGNOME)
                       VALUES ('".date("Y-m-d")."',
                       '".date("G:i:s")."',
                       '".$_SERVER['REMOTE_ADDR']."',
                       '".$_SERVER['HTTP_USER_AGENT']."'
                        '".$_SERVER['REMOTE_ADDR']."',
                        '".$nome."',
                        ".$cognome."'
                        )")or die('Failed to insert data into table!
    '.mysql_error());

    Secondo la stessa logica aggiungi tutti gli altri campi che devi gestire e dovrebbe andare.

  10. #10
    Utente di HTML.it L'avatar di ada50
    Registrato dal
    Aug 2009
    Messaggi
    27
    Ho provato facendo le variazioni suggerite esattamente queste:

    codice:
    $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    $nome = isset($_POST['nome']) ? $_POST['nome'] : '';
    $cognome = isset($_POST['cognome']) ? $_POST['cognome'] : '';
    $email = isset($_POST['email']) ? $_POST['email'] : '';
    $verifica = isset($_POST['verifica']) ? $_POST['verifica'] : '';
    $citta = isset($_POST['citta']) ? $_POST['citta'] : '';
    $professione = isset($_POST['professione']) ? $_POST['professione'] : '';
    per quanto riguarda la prima parte.

    Questa per la seconda

    codice:
    mysql_query("INSERT INTO $mysql_table (DATESTAMP, TIME, IP, BROWSER, NOME, COGNOME, EMAIL, VERIFICA, CITTA, PROFESSIONE)
    VALUES ('".date("Y-m-d")."',
    '".date("G:i:s")."',
    '".$_SERVER['REMOTE_ADDR']."',
    '".$_SERVER['HTTP_USER_AGENT']."'
    '".$_SERVER['REMOTE_ADDR']."',
    '".$nome."',
    '".$cognome."',
    '".$email."',
    '".$verifica."',
    '".$citta."',
    '".$professione."',
    )")or die('Failed to insert data into table!
    '.mysql_error());
    Mi dà errore
    Errore di sintassi nella query SQL vicino a ')' linea 13
    questo se inserisco il mio cognome senza apostrofo compilando il form, se invece compilo il form con il mio cognome con l'apostrofo mi dà questo:

    Errore di sintassi nella query SQL vicino a 'Alisa' 'mia.mail@gmail.com' 'mia.mail@gmail.com' ' linea 8

    Premetto che nel fare il form ho specificato di accettare l'apostrofo e la spazio bianco nel caso di doppio cognome.
    ada50

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.