Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198

    Impostare un "search & replace" di molteplici query su phpMyAdmin

    Ho bisogno di cercare e sostituire tanti diversi link e pezzetti di testo dentro un'unica tabella wp_postmeta, direttamente da dentro il database, mediante phpMyAdmin

    E' possibile farlo? Un codice del genere funzionerebbe? O che cosa dovrei eventualmente modificare?

    Codice PHP:
    UPDATE wp_postmeta
    SET meta_value 
    replace(meta_value'testo_1','testo_sostitutivo_1');

    UPDATE wp_postmeta
    SET meta_value 
    replace(meta_value'testo_2','testo_sostitutivo_2');

    UPDATE wp_postmeta
    SET meta_value 
    replace(meta_value'testo_3','testo_sostitutivo_3'); 

    Attualmente immagino ci sia qualche errore, visto che mi riporta l'errore:
    #1064 - 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 ''wp_postmeta' SET meta_value = replace(meta_value, 'testo_1','testo_sostitutivo_1' at line 1
    Ultima modifica di danielepalmas88; 09-03-2017 a 22:49

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Innanzi tutto bisogna salvare i dati per potere ripristinarli in caso di guai.
    Fossi in te farei due salvaguardie una per il ripristino e l'altra per le tue prove prima di fare la modifica suila tabella reale.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    Sì tranquillo, quando faccio lavori simili lo metto sempre in conto, munendomi di backups da riutilizzare in caso qualcosa vada storto.

    A riguardo del codice che ho postato, che ne pensi?

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ho applicato la tua query ad una mia tabella. Nessun errore.

    codice:
    UPDATE `tab3`
    SET `testo_ric` = replace(`testo_ric`, 'testo_1','testo_sostitutivo_1');
    UPDATE `tab3`
    SET `testo_ric` = replace(`testo_ric`, 'testo_2','testo_sostitutivo_2');
    UPDATE `tab3`
    SET `testo_ric` = replace(`testo_ric`, 'testo_3','testo_sostitutivo_3');
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    Capito. Quindi - visto che a me non funziona - devo indagare sul mio errore #1064 che potrebbe essere determinato presumibilmente dalla versione di sql, la quale potrebbe pretendere l'utilizzo degli apostrofi sulle `query`
    Grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    Altra domandina: come posso fare search and replace di uno specifico meta_key?

    La mia tabella wp_postmeta comprende
    meta_id post_id meta_key meta_value

    Tra le varie voci di meta_key c'è il parametro 'nazionalità'

    Così ho provato a lavorare direttamente là dentro mediante il seguente codice...
    codice:
    UPDATE `wp_postmeta` SET `nazionalità` = replace(`nazionalità`, 'testo','testo_sostitutivo');
    ...ma mi dà errore...

    Come posso fare?
    Ultima modifica di danielepalmas88; 14-03-2017 a 18:15

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    A quanto pare non conosci bene il concetto di campo.
    L'update si fa su dei campi. Nazionalità non è un campo ma un valore di un campo. Puoi rimpiazzare un valore in un campo ma non puoi usare un valore come se fosse un campo.

    Non conosco wp. ma forse è questo che volevi fare : update wp_post_meta set meta_value = replace(meta_value, 'testo1', 'testo2') where meta_key = 'nazionalità'
    rimpiazza nel campo meta_value testo1 da testo2 per tutti record che hanno meta_key = 'nazionalità'
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    Esatto è proprio lo stesso codice che ho trovato qualche minuto fa' spulciando su vari forum americani... Ma non va...

    Sia con...
    codice:
    UPDATE `wp_postmeta` SET `meta_value` = REPLACE (`meta_value`, 'testo1', 'testo2') WHERE `meta_key` LIKE 'nome_campo' ;
    ...che con...
    codice:
    UPDATE `wp_postmeta` SET `meta_value` = REPLACE (`meta_value`, 'testo1', 'testo2') WHERE `meta_key` = 'nome_campo' ;
    ...il comando funziona, ma mi sostituisce 0 risultati.

    Se invece tagliassi la parte finale
    codice:
    WHERE `meta_key` = 'nome_campo'
    ho notato che le sostituzioni le farebbe con successo. Ma il problema è che a me serve sostituire solo le parole contenute in una precisa meta_key, non in tutte. E' strano che il codice mi dia esito negativo, sostituendo 0 queries.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    EDIT: Ho risolto usando questo esempio:

    UPDATE wp_postmeta SET `meta_value`

    = Replace (`meta_value`,
    'greedy', 'successful')
    WHERE `meta_key` LIKE 'attitude';

    Non so davvero cosa fosse diverso...a parte il Replace anziché REPLACE o gli spazi a capo...

  10. #10
    ehehehehe capita quando si va di copia&incolla senza sapere quello che si sta facendo ehehehehehe

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.