[MySQL] Problemino con UPDATE

Discussione in 'MySQL' iniziata da Bened, 11 Ottobre 2019 alle 10:16.

  1. Bened

    Bened Nuovo Utente

    Registrato:
    Venerdì
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Salve, sono nuovo nel gruppo, spero che qualcuno di voi possa aiutarmi a risolvere un problema di UPDATE in MySQL inviato da una pagina PHP:

    Copio l'istruzione:
    PHP:
                           $soggetti = array(71 72 73 74);
                            
    $punti1 = array(10);
                            
    $punti2 = array(10);
                            
    $punti3 = array(20);
                          
                                    foreach(
    $soggetti as $a => $id)
                                    for(
    $x=0$x<count($a); $x++){   
                              
                                    
    $lista_soggetti[] = ("UPDATE `soggetti` SET ".
                                    
    " `data_modifica` = 2019-10-09 , ".
                                    
    " `utente` = 'pippo.pippo' , ".
                                    
    " `estratto`  = 'SI' , ".
                                    
    " `punti_1` = ".$punti1[$a]." , ".
                                    
    " `punti_2` = ".$punti2[$a]." , ".                               
                                    
    " `punti_3` = ".$punti3[$a]." , ".
                              
                                    
    " `data_estrazione` = 2019-10-09 ".
                                    
    " WHERE `soggetto` = ".$soggetti[$a]."; ");
                                     }
                              
                                    
    $lista_soggetti_estratti implode($lista_soggetti);
                              
       echo 
    '<pre>'.print_r($lista_soggetti_estratti).'</pre>';
      
    mysql_query($lista_soggetti_estratti)or die('errore: 'mysql_error());

    Questo è il messaggio di errore che mi da la pagina:

    UPDATE `soggettiSET `data_modifica` = 2019-10-09 , `utente` = 'pippo.pippo' , `estratto` = 'SI' , `punti_1` = , `punti_2` = , `punti_3` = , `data_estrazione` = 2019-10-09 WHERE `soggetto` = 71UPDATE `soggettiSET `data_modifica` = 2019-10-09 , `utente` = 'pippo.pippo' , `estratto` = 'SI' , `punti_1` = , `punti_2` = , `punti_3` = , `data_estrazione` = 2019-10-09 WHERE `soggetto` = 72UPDATE `soggettiSET `data_modifica` = 2019-10-09 , `utente` = 'pippo.pippo' , `estratto` = 'SI' , `punti_1` = , `punti_2` = , `punti_3` = , `data_estrazione` = 2019-10-09 WHERE `soggetto` = 73UPDATE `soggettiSET `data_modifica` = 2019-10-09 , `utente` = 'pippo.pippo' , `estratto` = 'SI' , `punti_1` = , `punti_2` = , `punti_3` = , `data_estrazione` = 2019-10-09 WHERE `soggetto` = 74;

    erroreYou have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE `soggetti` SET `data_modifica` = 2019-10-09 , `utente` = 'pippo.pippo' at line 1



    Premetto che, incollando la stringa dell'
    UPDATE su MySQL funziona perfettamentee funziona anche dalla pagina PHP se il dati si riferiscono ad un solo recordho provato anche mettendo dati all'interno degli apici, cioè cosi:

                            $soggetti = array(71 , 72 , 73 , 74);
                            $punti1 = array(1, 2 , 3 , 0);
                            $punti2 = array(1, 1 , 2 , 0);
                            $punti3 = array(2, 3 , 5 , 0);
                          
                                    foreach($soggetti as $a => $id)
                                    for($x=0; $x<count($a); $x++){   

    $lista_soggetti[] = ("UPDATE `soggetti` SET ".
                                    " `data_modifica` = '
    2019-10-09' , ".
                                    " `utente` = '
    pippo.pippo' , ".
                                    " `estratto`  = '
    SI' , ".
                                    " `punti_1` = ' ".
    $punti1[$a]." ' , ".
                                    " `punti_2` = ' ".
    $punti2[$a]." ' , ".                               
                                    " `punti_3` = ' ".
    $punti3[$a]." ' , ".
                              
                                    " `data_estrazione` = '
    2019-10-09' ".
                                    " WHERE `soggetto` = ' ".
    $soggetti[$a]." '; ");
                                     }
    Grazie in anticipo
     
    Ultima modifica di un moderatore: 11 Ottobre 2019 alle 15:01
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.548
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    intanto toglierei tutti gli "apici storti" (non ricordo il loro nome)
    UPDATE `soggetti` SET diventa UPDATE soggetti SET
    questi apici non servono se i nomi non hanno spazi interposti e confondono molto la lettura

    mentre l'apice (sulla mia tastiera sta sotto il punto di domanda), deve racchiudere tutti i valori, non espressamente numerici, tra cui le date, cosa che non vedo nella tua query

    fatto strano che abbia funzionato con altri sistemi, con la sintassi che hai pubblicato ….
     
  3. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.859
    Mi Piace Ricevuti:
    286
    Punteggio:
    83
    Sesso:
    Maschio
    @Bened
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag [​IMG] o il tag [​IMG] per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    [​IMG]

    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti prima di continuare
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
    A Bened piace questo elemento.
  4. Bened

    Bened Nuovo Utente

    Registrato:
    Venerdì
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio

    Mi scuso per non essere stato attento e rigrazio per la pazienza e la disponibilità avuta
     
  5. Bened

    Bened Nuovo Utente

    Registrato:
    Venerdì
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Grazie per l'aiuto, ho seguito le tue indicazioni, ho tolto gli apici storti ed ho racchiuso i valori dentro gli apici (quelli giusti),
    ma l'errore si ripresenta.

    Volevo segnalare che apici storti vengono generati da MySQL quando modifico un record, quindi ho copiato pari pari la stringa che si è generata ed incollata all'interno della pagina PHP, ecco perchè anche con gli apici storti funzione in MySQL
     
  6. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.548
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    per me la query deve essere scritta in questo modo
    Codice:
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', punti_1 = 1, punti_2 = 1, punti_3 = 2, data_estrazione = '2019-10-09' WHERE soggetto = 71;
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', punti_1 = 2, punti_2 = 1, punti_3 = 3, data_estrazione = '2019-10-09' WHERE soggetto = 72;
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', punti_1 = 3, punti_2 = 2, punti_3 = 5, data_estrazione = '2019-10-09' WHERE soggetto = 73;
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', punti_1 = 0, punti_2 = 0, punti_3 = 0, data_estrazione = '2019-10-09' WHERE soggetto = 74;
    l'errore segnalato
    "syntax near 'UPDATE soggetti SET data_modifica = 2019-10-09, utente = 'pippo.pippo' at line 1"
    guarda caso nella tua linea 1 la data era senza apici
    quindi controlla bene la query costruita dal tuo script php
    e se dovesse dare ancora errore, posta l'echo della stessa query con il motivo dell'errore
     
  7. Bened

    Bened Nuovo Utente

    Registrato:
    Venerdì
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ti ringrazio (scusa per il tu) per l'attenzione, ho fatto le correzioni che mi hai suggerito ma continua a non esegurie la query, invio il codice rivisto e l'echo del messaggio di errore:

    PHP:
    $soggetti = array(71 72 73 74);
    $punti1 = array(10);
    $punti2 = array(10);
    $punti3 = array(20);

    foreach(
    $soggetti as $a => $id)
    for(
    $x=0$x<count($a); $x++){   

    $lista_soggetti[] = ("UPDATE soggetti SET ".
    " data_modifica = '2019-10-09' , ".
    " utente = 'pippo.pippo' , ".
    " estratto  = 'SI' , ".   
    " punti_1 = ".$punti1[$a]." , ".   
    " punti_2 = ".$punti2[$a].", ".                                 
    " punti_3 = ".$punti3[$a]." , ".   
    " data_estrazione = '2019-10-09' ".
    " WHERE soggetto = ".$soggetti[$a]."; ");
    }

    $lista_soggetti_estratti implode($lista_soggetti);
                                                      
    echo 
    '<pre>'.print_r($lista_soggetti_estratti).'</pre>';
    mysql_query($lista_soggetti_estratti)or die('errore: 'mysql_error());
    e questo è l'echo della query ed il messaggio di errore:

    Codice:
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', data_estrazione = '2019-10-14', punti_1 = 1, punti_2 = 1, punti_3 = 2 WHERE soggetto = 71; 
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', data_estrazione = '2019-10-14', punti_1 = 2, punti_2 = 1, punti_3 = 3 WHERE soggetto = 72; 
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', data_estrazione = '2019-10-14', punti_1 = 3, punti_2 = 2, punti_3 = 5 WHERE soggetto = 73; 
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', estratto = 'SI', data_estrazione = '2019-10-14', punti_1 = 0, punti_2 = 0, punti_3 = 0 WHERE soggetto = 74; 
    
    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 '
    UPDATE soggetti SET data_modifica = '2019-10-09', utente = 'pippo.pippo', ' at line 1
     
  8. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.548
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    considerato che la query prodotta non mi ha dato errore con ms sql server, (non ho mysql)
    ho provato a leggere il manuale, con questo risultato

    upload_2019-10-15_13-5-46.png

    buona correzione
     

    Files Allegati:

Sto caricando...
Discussioni simili - [MySQL] Problemino UPDATE
  1. bipolare75
    Risposte:
    2
    Visite:
    90
  2. MrSab
    Risposte:
    5
    Visite:
    243
  3. gchidik
    Risposte:
    0
    Visite:
    225
  4. concetto
    Risposte:
    4
    Visite:
    219
  5. Shyson
    Risposte:
    0
    Visite:
    146

Condividi questa Pagina