[MySQL] Problemino con UPDATE

Bened

Nuovo Utente
11 Ott 2019
7
0
1
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(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]."; ");
                                 }
                          
                                $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 `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;

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



Premetto che, incollando la stringa dell'UPDATE su MySQL funziona perfettamente, e funziona anche dalla pagina PHP se il dati si riferiscono ad un solo record, ho 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:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
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 ….
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@Bened
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008


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
 
  • Like
Reactions: Bened

Bened

Nuovo Utente
11 Ott 2019
7
0
1
@Bened
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008


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


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

Bened

Nuovo Utente
11 Ott 2019
7
0
1
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 ….

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
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
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
 

Bened

Nuovo Utente
11 Ott 2019
7
0
1
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

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(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]."; ");
}

$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
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
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
 

Allegati

  • upload_2019-10-15_13-4-59.png
    upload_2019-10-15_13-4-59.png
    32 KB · Visite: 330

Bened

Nuovo Utente
11 Ott 2019
7
0
1
Ho risolto:

PHP:
 $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]."; ");
   mysql_query($lista_soggetti[$a])or die('errore: '. mysql_error());
   }

$lista_soggetti_estratti = implode($lista_soggetti);                                        
echo '<pre>'.print_r($lista_soggetti_estratti).'</pre>';

//mysql_query($lista_soggetti_estratti)or die('errore: '. mysql_error());

L'errore era mettere l'esecuzione della query fuori il ciclo for
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
L'errore era mettere l'esecuzione della query fuori il ciclo for
ovvero mettendo la query all'interno del ciclo for, esegui una query alla volta, esattamente come dice il manuale evidenziato,
le query multiple non sono supportate
e la query non deve terminare con punto e virgola ….
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Errore MySQL (era: problemino) PHP 4
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
D Emoji in mysql Database 0
L Aiuto per programma web php/mySQL PHP 2
S Problema esportazione tabelle Mysql in Excel PHP 0
S Cancellare una riga MYSQL PHP 1
L Ricerca valore mysql e incremento PHP 73
G database mysql contengono informazioni ? MySQL 0

Discussioni simili