errore aggiornamento tabella mysql

master1986

Utente Attivo
8 Ott 2012
234
0
16
ciao

ho un problema con la funzione query update

Praticamente ho 2 tabelle contenute nel database, quindi con questa struttura e campi


database
-tabella1
--campo1
-tabella2
--campo1

la funzione che uso è questa


$query = "UPDATE tabella1 SET campo1='{$variabiledefinita1},' campo2='{$variabiledefinita2},";



Una volta lanciato lo script funziona, e carica ad esempio un dato "10" in tabella1---->campo1


Il problema si verifica se eseguo nuovamente lo script. Praticamente mi aggiunge un altro valore (doppione), di conseguenza se interrogo il db l'echo mi restituisce dei valori doppi, ad esempio

1010

quando invece era solo 10



qualche suggerimento per evitare i doppioni? a me servirebbe solo sovrascrivere il dato presente.
 
Ciao, scusa non ho capito.
Ma se hai due tabelle come fai a scrivere in entrambi con una sola query?
Dovresti fare così per aggiornare due tabelle differentemente:
PHP:
$query = "UPDATE tabella1 SET campo1='{$variabiledefinita1}";
$query2 = "UPDATE tabella2 SET campo2='{$variabiledefinita2}";
 
Ultima modifica:
Ciao, scusa non ho capito.
Ma se hai due tabelle come fai a scrivere in entrambi con una sola query?
Dovresti fare così per aggiornare due tabelle differentemente:
PHP:
$query = "UPDATE tabella1 SET campo1='{$variabiledefinita1}";
$query2 = "UPDATE tabella2 SET campo2='{$variabiledefinita2}";




Sto provando in questo modo ma non si aggiornano i dati, prima si aggiornavano e praticamente aggiornando un campo mi aggiornava tutti i campi aggiungendo i valori uno di seguito all'altro

praticamente con echo il valore 3 veniva visualizzato così

333333333333333333333333333333333333333333333333


praticamente viene triplicato ad ogni update dello script php
 
Guarda una spiegazione logica per il fatto che la query ti scriva un tot numero di volte
qualcosa automaticamente è che si trovi in un ciclo.
Controlla che la query non sia inserita all'interno di un ciclo di iterazione e che
non venga eseguita piu' volte.
Inoltre non ho ben capito come fai a scrivere in due tabelle diverse con una sola query
al massimo puoi scrivere in due record diversi nella stessa tabella.
 
Ultima modifica:
secondo me il problema è nella variabile
controlla cosa contiene prima dell UPDATE
PHP:
var_dump($variabiledefinita1);
probabilmente contiene il valore gia triplicato
 
Questa è la struttura del mio database

-Database
--Tabella1
---Campo1
---Campo2
---Campo3
--Tabella2
---Campo1
---Campo2
---Campo3


Possiedo 3 variabili, le quali generano un valore numerico, quindi $variabile1. $variabile2, $variabile3


I dati della $variabile 1 devono essere scritti in Campo1
quelli di $variabile 2 in Campo2
mentre quelli di $variabile3 in Campo 3



Forse sono io che non ho strutturato lo script bene


consigliatemi voi
 
secondo me il problema è nella variabile
controlla cosa contiene prima dell UPDATE
PHP:
var_dump($variabiledefinita1);
probabilmente contiene il valore gia triplicato



Ciao criric, ho controllato e fatto anche degli echo, tutte e 3 le variabili generano dei valori brevi, esempio 1, 2, 3.3 ecc

quindi le variabili hanno un valore
 
ragazzi vi posto anche come ho creato il database così vediamo se ho sbagliato:


CREATE TABLE TABELLA1 (
campo1 VARCHAR(20),
campo2 VARCHAR(20),
campo3 VARCHAR(20)
);


poi ho inserito dei dati a piacere (tanto dopo con la funzione php verranno sovrascritti da quelli reali)


INSERT INTO tabella1 (campo1) VALUES (1);
INSERT INTO tabella1 (campo2) VALUES (1);
INSERT INTO tabella1 (campo3) VALUES (1);




va bene così?


e poi di seguito le altre tabelle, ora quello che vorrei capire e come poter aggiornare i campi con php della tabella 1
 
puoi postare anche il codice php che usi?
 
prova ad inserire come query di insert questa:

PHP:
$sql = mysql_query("INSERT INTO tabella1 (campo1) VALUES  (1)") ;
 
Ultima modifica:
L'avevo corretta riprova con quella corretta:

PHP:
$sql = mysql_query("INSERT INTO tabella1 (campo1) VALUES  (1)") ;
 
veramente assurda come cosa, sono costretto sempre a ricreare il database poichè in 3/5 update dello script php diventa di alcuni mb la tabella!


Appena creo il database è faccio un echo, mi da correttamente il valore che ho inserito in phpmyadmin, cioè "1"


Appena faccio l'update query triplicano tante volte quanti campi ci sono nella tabella


è un ragionamento contorto ma penso che mi abbiate capito
 
ho provato ma mi dice che la query è vuota :eek:




Ecco, funziona :) praticamente mettendo al posto di (1) la variabile che possiedo mi inserire il dato nel campo


Il problema ora è che ogni qualvolta eseguo lo script per caricare i dati me lo aggiunge di seguito, cioè si raddoppia, dovrebbe aggiornarsi.

esempio:

$sql = mysql_query("INSERT INTO tabella1 (campo1) VALUES (1)") ;


il risultato dell'echo è: 1


Se invece vado a fare un nuovo update, presupponendo che il valore sia 50 ecco cosa mi esce


risultato dell'echo: 150




Praticamente ha aggiunto di seguito il primo update e il secondo. dovrebbe aggiornarlo


è possibile?
 
No, non ha senso prova con questa query di Update.
PHP:
$query = "UPDATE tabella1 SET campo1='2' WHERE campo1= '1'";
 
Ultima modifica:
Faccio una cosa metto il codice php con cui faccio lo script, è semplicissimo e corto
PHP:
<?php
mysql_connect('host', 'user', 'pass');
mysql_select_db('nomedb');

$query = "UPDATE tabella1 SET campo1='$variabile1' WHERE campo1='$variabile1'";
$result = mysql_query($query);

if (!$result) {
    die("Errore nella query $query: " . mysql_error());
}

$result = mysql_query($query);
mysql_close();
?>
Di funzionare funziona, il dato lo carica, ma si somma, restituisce un valore doppio ogni qualvolta si fa un update dello script
 
Ultima modifica di un moderatore:
Ho controllato le variabili, che vengono generate da un altro script è restituiscono valori corretti.

A questo punto non saprei più che fare.
 
Prova così, inserisci i parametri di connessione del tuo db.
Comunque è meglio richiamare i parametri di connessione esternamente.
PHP:
<?php

$dbhost = 'localhost'; 
$dbuser = 'user'; 
$dbpass = 'pass'; 
$dbname = 'name'; 
$connessione = mysql_connect("localhost","user","pass") 
or die("Impossibile connettersi al server host"); 
mysql_select_db(name, $connessione) or die 
("Impossibile selezionare il database.");

$query = mysql_query("UPDATE tabella1 
         SET campo1='$variabile1'
         WHERE campo1='1'");
mysql_close($connessione);

?>
 
Ultima modifica:
Prova così, inserisci i parametri di connessione del tuo db.
Comunque è meglio richiamare i parametri di connessione esternamente.
PHP:
<?php

$dbhost = 'localhost'; 
$dbuser = 'user'; 
$dbpass = 'pass'; 
$dbname = 'name'; 
$connessione = mysql_connect("localhost","user","pass") 
or die("Impossibile connettersi al server host"); 
mysql_select_db(name, $connessione) or die 
("Impossibile selezionare il database.");

$query = mysql_query("UPDATE tabella1 
         SET campo1='$variabile1'
         WHERE campo1='1'");
mysql_close($connessione);

?>




Ora non si aggiorna il valore, resta sempre 1, cioè il valore che ho prestabilito quando ho creato il database



dove sta il nodo :incazz2:
 

Discussioni simili