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

    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,373
    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
    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,373
    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
    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
    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,373
    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
    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
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.