Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Duplicare record

  1. #1

    Duplicare record

    Ciao a tutto il forum sto cercando di duplicare un record con il seguente codice

    Codice PHP:
    INSERT INTO $table SELECT FROM $table WHERE id ".$id."
    Ma esce il seguente errore
    Valore duplicato '6' per la chiave 'PRIMARY'

    Questo perchè l'id è autoincrement, ora la struttura della tabella non la conosco in quanto viene creata dal cliente conosco solo due campi solo l'id e un campo visibile si e no.

    Grazie a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    SELECT * ti prende anche l'id della entry che vuoi duplicare e quindi l'INSERT proverà ad usare l'id di quella esistente anche per la nuova, ed essendo l'id una PRIMARY KEY, ti darà errore di chiave duplicata.
    Fallo con 2 query, con la prima recuperi tutti i dati della entry da copiare e con la seconda fai un'INSERT specificando tutti i campi tranne l'id, a cui verrà dato automaticamente un nuovo valore valido.

  3. #3
    INSERT INTO $table SELECT * FROM $table....

    vorresti forse fare una insert selezionando i dati dalla stessa tabella?


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

  4. #4
    Ciao Scusa per il ritardo ma ero in ferie, ho seguito le istruzioni di Alhazred e ora ho un piccolo problema

    Dentro arrCampi ho i nomi dei campi inseriti dal cliente mentre in empty ho i valori da copiare.
    Codice PHP:
    for($i=1,$x=1;$i<count($arrCampi),$x<count($empty);$i++,$x++){
                
                
    $sqlQuery ="INSERT INTO $table ($arrCampi[$i]) VALUES('".$empty[$x]."');";
                
    $rsQuery mysql_query($sqlQuery) or die(mysql_error());
            } 
    Eseguendo questo codice ovviamente mi va a creare n record invece di creare un record e duplicarlo.

    Come posso modificare il codice per permettere di inserire nella tabella una sola riga?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da simone.marchese
    Ciao Scusa per il ritardo ma ero in ferie, ho seguito le istruzioni di Alhazred e ora ho un piccolo problema

    Dentro arrCampi ho i nomi dei campi inseriti dal cliente mentre in empty ho i valori da copiare.
    Codice PHP:
    for($i=1,$x=1;$i<count($arrCampi),$x<count($empty);$i++,$x++){
                
                
    $sqlQuery ="INSERT INTO $table ($arrCampi[$i]) VALUES('".$empty[$x]."');";
                
    $rsQuery mysql_query($sqlQuery) or die(mysql_error());
            } 
    Eseguendo questo codice ovviamente mi va a creare n record invece di creare un record e duplicarlo.

    Come posso modificare il codice per permettere di inserire nella tabella una sola riga?
    Intendevi fare una cosa di questo tipo?

    Codice PHP:
    $sqlQuery "INSERT INTO $table ";

    for(
    $i=0,$x=0;$i<count($arrCampi),$x<count($empty);$i++,$x++){ 
                 
                
    $campi_tabella .= "$arrCampi[$i],"
                
    $campi_values .= "'$empty[$i]',";
            }
            
            
    $sqlQuery.='('.substr($campi_tabella,0,-1).') VALUES('.substr($campi_values,0,-1).')';
            
    mysql_query($sqlQuery) or die(mysql_error()) 

  6. #6
    Grazie mille funziona benissimo!!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da simone.marchese
    Grazie mille funziona benissimo!!!!
    Di nulla

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.