Questa è la spiegazione di ON DUPLICATE KEY UPDATE sul sito di mysql, ed è proprio quello che servirebbe a me per fare l'update di una riga, ma non riesco a capire la sintassi.
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
If you specify the ON DUPLICATE KEY UPDATE clause (new in MySQL 4.1.0), and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed. For example, if column a is declared as UNIQUE and already contains the value 1, the following two statements have identical effect:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;
mysql> UPDATE table SET c=c+1 WHERE a=1;
Questo è la parte di script in questione:
La chiave primaria è game_ID e vorrei far sì che quando si inserisce una riga con game_ID già presente, venga sovrascritta la precedente.Codice PHP:
$query = "INSERT INTO stw_records(game_ID, recordman, points)
VALUES('$_POST[game_ID]', '$_POST[recordman]', '$_POST[points]')
ON DUPLICATE KEY UPDATE";
$rec = mysql_query($query)
or die("Query non valida: " . mysql_error());
Lasciando in questo modo mi compare:
Ho provato a modificarlo in maniera identica all'esempio per fare una prova scrivendo:Query non valida: 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 'ON DUPLICATE KEY UPDATE' at line 3
ma continua a dare errore.Codice PHP:
$query = "INSERT INTO stw_records(game_ID, recordman, points)
VALUES('$_POST[game_ID]', '$_POST[recordman]', '$_POST[points]')
ON DUPLICATE KEY UPDATE points=points+1";
$rec = mysql_query($query)
or die("Query non valida: " . mysql_error());
Che cosa sbaglio? Qual è la giusta sintassi? Come posso fare per far aggiornare una riga? Aiutoooooo!!!