- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Semplice modifica php+mysql
-
Semplice modifica php+mysql
Sto impazzendo, non capisco come fare in modo che lo script mi modifichi in un momento solo due righe del database (entrambe con lo stesso unique code)
Premetto che non sono esperto di php.
le righe di php da modificare sarebbero le seguenti:
# Do DB update $Set_LastActivity = time(); $query = "UPDATE InfResp_subscribers SET LastActivity = '$Set_LastActivity', TimeJoined = '$Set_LastActivity', Real_TimeJoined = '$Set_LastActivity', Confirmed = '1' WHERE SubscriberID = '$DB_SubscriberID'"; $DB_result = mysql_query($query) or die("Invalid query: " . mysql_error());
In pratica ho due righe con lo stesso "uniquecode"
INSERT INTOInfResp_subscribers
(SubscriberID
,ResponderID
,SentMsgs
,EmailAddress
,TimeJoined
,Real_TimeJoined
,CanReceiveHTML
,LastActivity
,FirstName
,LastName
,IP_Addy
,ReferralSource
,UniqueCode
,Confirmed
,responder_double_r2
) VALUES
(8, 4, '', '[email protected]', 1283691697, 1283691697, 0, 1283691697, 'marco', 'silvestri', '93.46.198.5', 'none', '59206189558c28d', 1, 4);INSERT INTO
InfResp_subscribers
(SubscriberID
,ResponderID
,SentMsgs
,EmailAddress
,TimeJoined
,Real_TimeJoined
,CanReceiveHTML
,LastActivity
,FirstName
,LastName
,IP_Addy
,ReferralSource
,UniqueCode
,Confirmed
,responder_double_r2
) VALUES
(9, 1, '', '[email protected]', 1283691697, 1283691697, 0, 1283691697, 'marco', 'silvestri', '93.46.198.5', 'none', '59206189558c28d', 1, 4);Attualmente il codice php mi sposta soltanto il primo record da non confirmed (confirmed=0) a confirmed (confirmed=1)
Vorrei che la modifica fosse fatta su tutte le righe contenenti quel determinato "uniquecode"
-
Beh ma se stiamo parlando di modifiche allora credo ti serva la sintassi UPDATE, non INSERT.
La prima fa appunto una modifica, la seconda un nuovo inserimento nella tabella, quindi una nuova riga.
-
la funzione php è un update.
Dove vedi insert è soltanto un export del database, per far capire come sono impostati i due record di esempio
Come posso modificare la funziona php che ho incollato nel post precedente?
-
Se metti la query cosi?
$query = "UPDATE InfResp_subscribers SET LastActivity = '$Set_LastActivity', TimeJoined = '$Set_LastActivity', Real_TimeJoined = '$Set_LastActivity', Confirmed = '1' WHERE SubscriberID = '$DB_SubscriberID' AND uniquecode='$valoreUniquecode'";
-
Sei stato illuminante, ho risolto in questo modo:
$query = "UPDATE InfResp_subscribers SET LastActivity = '$Set_LastActivity', TimeJoined = '$Set_LastActivity', Real_TimeJoined = '$Set_LastActivity', Confirmed = '1' WHERE uniquecode='$valoreUniquecode'";Adesso ho un altro problema:
Per eliminare un record ho questa riga:
$query = "DELETE FROM InfResp_subscribers WHERE UniqueCode = '$code'";
$DB_result = mysql_query($query) or die("Invalid query: " . mysql_error());La query funziona (infatti su phpmyadmin vengono eliminati i record giusti), ma la pagina restituisce (non capisco il motivo) questo errore:
Invalid query: Unknown column 'UniqueCode' in 'where clause'Dove sbaglio?
Grazie mille
-
Che sia una parola chiave?
Se provi ad anteporre il nome della tabella?DELETE FROM InfResp_subscribers WHERE InfResp_subscribers.UniqueCode
-
la cosa che non capisco è perchè però nell'altra query funziona alla perfezione...
$query = "UPDATE InfResp_subscribers SET LastActivity = '$Set_LastActivity', TimeJoined = '$Set_LastActivity', Real_TimeJoined = '$Set_LastActivity', Confirmed = '1' WHERE uniquecode='$valoreUniquecode'";
Fa lo stesso lavoro anche se imposto come EmailAddress
Domani riprovo con calma magari
-
Potrebbe essere un problema di permessi dell'utente magari...
-
Sono su cPanel ed ho impostato i permessi massimi per l'utente. Ad ogni modo appena ho tempo provo ad antepore il nome della tabella e vedo che succede
-
Altrimenti attendiamo altri aiuti da altri utenti.
Visto l'ora il mio cervello deve ancora accendersi...
-
Non va. nemmeno anteponendo il nome della tabella.
Non so dove battere la testa, perchè con la stess identica dichiarazione in fase di UPDATE funziona alla perfezione.
Chi mi sa dare una mano?
-
Ho risolto in questo modo, commentanto una parte della seconda riga:
$query = "DELETE FROM InfResp_subscribers WHERE EmailAddress = '$DB_EmailAddress'"; $DB_result = mysql_query($query)/* or die("Invalid query: " . mysql_error())*/;
é una cosa da pazzi? da problemi di qualche tipo?
Se si, perchè?
-
La riga che hai commentato serve appunto ad avvisarti su eventuali errori nello script.
Semmai è da capire il perchè di quell'errore visto che sembra eseguire davvero la query.
-
Non è che sembra eseguire lo script, lo esegue alla perfezione.
Ad ogni modo, per quello che mi riguarda ho risolto.
Grazie mille Marco
La prossima volta ci sentiamo per telefono sembrava di essere in chat
-
Ma almeno se passa un altro utente con lo stesso problema ha una traccia su come risolvere.
Alla prossima qua nel Forum.Ciao.
-
Se il tuo database gira su linux il problema potrebbe essere molto semplicemente... il case-sensitive.
Nella prima query (quella funzionante) hai scritto "uniquecode", mentre nella seconda hai scritto "UniqueCode".
Su linux, i nomi delle tabelle sono case-sensitive e con le giuste impostazioni lo sono anche i nomi delle colonne. A quel punto per lui "UniqueCode" non esiste, perché in realtà la colonna si chiama "uniquecode".
A quel punto la query restituisce un errore e il die ne blocca l'esecuzione. Togliendo il die funziona perché la query non viene interrotta, ma potrei scommettere che non ti aggiorna la colonna "uniquecode"...Spero di essere stato d'aiuto,
un saluto.