Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    problema con insert into

    Salve a tutti devo inserire un casino di dati in un database:

    Codice PHP:
    mysql_query("Insert Into registrazioni (IDU, Email, NomeAzienda, Nome, Cognome, Indirizzo, Citta, Provincia, CAP, Telefono, Privacy, DataRegistrazione) values (".$IDU.", ".$Email.", ".$NomeAzienda.", ".$Nome.", ".$Cognome.", ".$Indirizzo.", ".$Citta.", ".$Provincia.", ".$Cap.", ".$Telefono.", ".$Privacy.", Now())") or die (mysql_error()); 
    il problema che mi da 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 '@live.it, smol, Marco, Rossi, Vittorio Veneto

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    insert into (.....) values ('$IDU','$Email','$NomeAzienda'....

  3. #3
    scusa che cambia se faccio ('$IDU','$Email','$...

    con (".$IDU.",".$Email."...

  4. #4
    insert into (.....) values ('".$IDU."','".$Email."','".$NomeAzienda."'....

    prova così

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da techno
    scusa che cambia se faccio ('$IDU','$Email','$...

    con (".$IDU.",".$Email."...
    La sintassi che ti ho suggerito è più semplice ed evita di incasinarti con tutte le concatenazioni come puntualmente è accaduto.

  6. #6
    ok come dici tu va benissimo ma mi da un problema nell'iserire la data odierna:

    io ho fato cos':
    ,'$Telefono','$Privacy',Now()") or die (mysql_error());

    mi da 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 '' at line 1

    il fatto stranmo e che io ho sempre fatto Now() e non mi ha mai dato problemi
    ora perchè me lo dà???

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Posta la query completa e prova anche a fare un echo della stessa per vedere come viene risolta prima della sua esecuzione.

  8. #8
    ok caro nicola ti ringrazio di tutto ho risolto il problema mancava una ')'

    grazie di cuore per il tuo aiuto.

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Secondo me analizzare le query in questo mod e' un macello e mi sembra di capire che ci sian un problema di fondo sul funzionamento delle stringhe.


    Se io faccio una sql essa dovra' rispettare la sintassi sql ossia le stringhe devono essere incapsulate o tra singoli apici o tra doppi apici.

    Se tu generi la stringa con un altro linguaggio devi assicurarti che tale stringa arrivi correttamente formattata al server sql. Senno' ti dara' errore di sintassi per esempio :

    Codice PHP:

    // creiamo una stringa generica
    // nota potrebbe benissimo essere anche caricata da database $_POST o altro
    $valore "ciao";

    // Se facciamo la query di inserimentio :
    $q1 "insert into tabella (campo) values ( $valore )";
    /*
     NON funziona (anche se e' un'istruzione sintaticcamente corretta per php) in quanto a sql arriva la stringa

    insert into tabella (campo) values ( ciao )

    sql vede ciao senza apici o virgolette e lo interpreta come variabile, non esistendo tale variabile da errore.
    */

    // SE invece facciamo 
    $q2 "insert into tabella (campo) values ( '$valore' )";
    /*
    FUNZIONA perche a sql arriva 

    insert into tabella (campo) values ( 'ciao' )

    Che e' sintatticamente corretta
    */ 

    Come vedi devi forgiare le stringhe di queryin opportunamente.
    Inoltre ti sconsiglio di effettuare una insert per ogni riga che hai. Se i dati sono tanti ti conviene dare cosi'

    Codice PHP:

    if(count($data)>0)
    {
        
    $q ="insert into tabella (campo)  values ";

        foreach( 
    $data as $d )
        {
            
    $q .= "  ('".$d."') ," ;
        }
        
    $q substr$q ,strrpos$q "," ) );

        
    mysql_query$q $conn)or die(mysql_errorr());


    Questo cosa fa ? genera una queery del tipo
    insert into tabella (campo) values ('xxxxxx') , ('xxxxxx'), ('xxxxxx') ;
    ed e' meglio che nn fare 1 insert per riga.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.