Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Help: On duplicate key update (mysql)

    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:

    codice:
    $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());
    La chiave primaria è game_ID e vorrei far sì che quando si inserisce una riga con game_ID già presente, venga sovrascritta la precedente.
    Lasciando in questo modo mi compare:

    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
    Ho provato a modificarlo in maniera identica all'esempio per fare una prova scrivendo:

    codice:
    $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());
    ma continua a dare errore.

    Che cosa sbaglio? Qual è la giusta sintassi? Come posso fare per far aggiornare una riga? Aiutoooooo!!!

  2. #2
    Questa sintassi e' valida a partire da mysql 4.1. Quale versione usi di mysql?

    In pratica se esiste una chiave unica e tu vuoi inserirne un'altra identica, invece di un INSERT ti fara' un UPDATE.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Mea culpa; avevo controllato 2 volte che la versione fosse quella giusta, invece mi sono accorto che guardavo la versione php e non mysql.

    La versione mysql è la 4.0.20; grazie mille per avermene fatto rendere conto!

  4. #4
    Originariamente inviato da Raindrop
    Mea culpa; avevo controllato 2 volte che la versione fosse quella giusta, invece mi sono accorto che guardavo la versione php e non mysql.

    La versione mysql è la 4.0.20; grazie mille per avermene fatto rendere conto!
    poco male... fai una select per verificare se esiste l'id, poi con una if decidi se fare un INSERT oppure un UPDATE.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.