Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [Mysql] Copiare i dati di una tabella in un'altra tabella

    Salve,
    ho bisogno di copiare gli utenti di una tabella chiamata "users" (installata da un forum ASP) nella tabella "phpbb_users" (installata dal forum Phpbb).
    A tal proposito ho creato uno script php che ho caricato sul mio server, con la funzione di selezionare id, username, password ed email degli utenti dalla tabella "users" e tramite un ciclo while, inserirli tramite un'altra query nella tabella "phpbb_users". Il problema è che mi copia solo i primi 64 record senza dare errori. Non riesco a copiarli tutti. Sono circa 13 mila utenti.

    Qualcuno potrebbe aiutarmi gentilmente?

    Grazie in anticipo.



    Lo script è questo:

    Codice PHP:
    $query "SELECT Uid, uLogin, uPassword, uEMail FROM users";
    $result mysql_query($query$db);
    while(
    $row mysql_fetch_array($result)) {

    $id $row['Uid'];
    $username $row['uLogin'];
    $password $row['uPassword'];
    $email $row['uEMail'];


    $query1 "INTERT INTO phpbb_users (user_id, username, user_password, user_email) VALUES ('$id', '$username', '$password', '$email')" or die(mysql_error());
    $result1 mysql_query($query1$db);


  2. #2
    puoi fare con una sola query INSERT ... SELECT

    codice:
    INSERT INTO phpbb_users (user_id, username, user_password, user_email) 
    SELECT Uid, uLogin, uPassword, uEMail FROM users
    l'errore potrebbe essere dato dall'id duplicato.... (forse)

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

  3. #3
    Originariamente inviato da piero.mac
    puoi fare con una sola query INSERT ... SELECT

    codice:
    INSERT INTO phpbb_users (user_id, username, user_password, user_email) 
    SELECT Uid, uLogin, uPassword, uEMail FROM users
    l'errore potrebbe essere dato dall'id duplicato.... (forse)
    Con questa query mi dà l'id duplicato, esattamente. Come posso rimediare?

    Intanto ti ringrazio per la risposta.

  4. #4
    manuale...

    http://dev.mysql.com/doc/refman/5.0/...rt-select.html

    esiste un'opzione per la chiave duplicata

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

  5. #5
    Non ho capito come devo fare.. Un manuale in italiano?

  6. #6
    Ma tu con i record con id duplicati che ci vuoi fare? Se non decidi questo...

    Oltretutto noto solo ora che hai la stampa dell'eventuale errore mysql messa nella riga sbagliata. Probabilmente il tuo script si interrompe proprio per un id duplicato...

  7. #7
    Ho trovato la query, perfettamente funzionante:

    Codice PHP:
    $query "INSERT IGNORE INTO phpbb_users
    (user_id, username, user_password, user_email)
    SELECT uID, uLogin, uPassword, uEMail
    FROM users ON DUPLICATE KEY UPDATE user_id = LAST_INSERT_ID(user_id)"

    Ma s'è verificato un altro problema. Nella tabella "phpbb_users" del PHPBB 2 mi ha copiato tutti i 13 mila record in un secondo. Con la stessa formula, se non erro, non copia gli stessi dati nella tabella "phpbb_users" del PHPBB 3. Non capisco perché. Le tabelle non sono uguali. Infatti se metto quella della versione 2 non mi fa accedere al forum.

    Con la stessa formula, ho copiato solo il primo record nella tabella, mah. Ed infatti al forum mi accede, ed in lista iscritti c'è solo quel record più l'amministratore.


  8. #8

  9. #9
    Originariamente inviato da F@bius
    Up.
    devi controllare che il nome del campo e la struttura siano coerenti.

    metti la segnalazione di errore alla query.

    $result = mysql_query($query, $db) or die(mysql_error());

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

  10. #10
    Originariamente inviato da piero.mac
    devi controllare che il nome del campo e la struttura siano coerenti.

    metti la segnalazione di errore alla query.

    $result = mysql_query($query, $db) or die(mysql_error());
    Non dà nessuno errore. Mi copia soloun record.
    Non mi segnala alcun duplicato. La struttura e i campi sono perfettamente identici per quei campi. Infatti sul phpbb_users del PHPBB 3.0.1 ho copiato correttamente i 13 mila utenti, sul phpbb_users del PHPBB 3.0.2 non riesco.


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.