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

    [PHP&MySQL] Update poco efficiente

    Salve a tutti,
    dopo aver risolto il problema del sovraccarico della CPU mi sono accorto che, nonostante lo script ( che fa parte di una collezione di utility di amministrazione) operi bene facendo le dovute sostituzioni della parola senza la lettera accenta con quella accentata, al momento dell'operazione di UPDATE, questa non eseguita correttamente,ovvero:viene visualizzato l'output corretto, ma questo non viene preso per aggiornare tutte le voci selezionate...
    Questo è il codice:

    Codice PHP:
    <?php
    include("form_des.php");
          
          
    $s_grave$_POST['s_grave'];
          
    $c_grave$_POST['c_grave'];
          
    //selezione dei dati da bonificare:
              
    $query = ( " SELECT Description FROM links WHERE ( Description LIKE('% $s_grave %') OR Description LIKE('$s_grave %') OR Description LIKE('% $s_grave') OR Description LIKE('% $s_grave, %') OR Description LIKE('% $s_grave. %') OR Description LIKE('$s_grave, %'))") ;
          
    $result mysql_query($query);
          
    $mod mysql_affected_rows();
          while (
    $desc mysql_fetch_array($result))
          {

             
    $desc $desc[0];
             echo 
    "$desc";
             
    $ungraved = array($s_grave);
             echo 
    "
    $ungraved[0]";
             
    $graved = array($c_grave);
             echo 
    "
    $graved[0]";
             
    $new_desc str_replace $ungraved[0], $graved[0], $desc );
             echo 
    "
    $new_desc";

             
             
    $query1 = ("UPDATE links SET Description = REPLACE (Description, '$desc','$new_desc')");
             
    $result1 mysql_query($query1);
             
             
             if (
    mysql_query($query1))
                       echo 
    "
    [b]I dati sono stati aggiornati correttamente[/b]
    "
    ;
                 else
                   echo 
    "
    [b]I dati non sono stati aggiornati[/b]
    "
    ;    
            }  
          
        
         echo
    "
    Sono state bonificate [b]
    $mod[/b] descrizioni."
    ?>
    qualcuno saprebbe indicarmi la via per la risoluzione di questo problema? Thanx !!!
    ~ linux power never ends ~

  2. #2
    ma è possibile che sia una qualsiasi limitazione del comando UPDATE???
    ~ linux power never ends ~

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    C'è una cosa che non capisco.

    Fai una select con una clausola where cioè selezioni soltanto alcuni record della tabella ma fai un update globale !!!! nel senso che aggiorni tutte le Description con quella in corso di trattamento !!!!
    Per fortuna tua il replace che hai messo nell'update non rimpiazza sempre.

    :master:

    Se nella tua tabella vi è un identificativo univoco puoi procedere cosi...

    codice:
    $query = ( " SELECT Description, id FROM links WHERE ( Description LIKE('% $s_grave %') OR Description LIKE('$s_grave %') OR Description LIKE('% $s_grave') OR Description LIKE('% $s_grave, %') OR Description LIKE('% $s_grave. %') OR Description LIKE('$s_grave, %'))") ;
    ..
    while (list($desc,$id) = mysql_fetch_array($result)) {
     echo "$desc";
     $ungraved = array($s_grave);
     echo "
    $ungraved[0]";
     $graved = array($c_grave);
     echo "
    $graved[0]";
     $new_desc = str_replace ( $ungraved[0], $graved[0], $desc );
     echo "
    $new_desc";
     $query1 = "UPDATE links SET Description = '$new_desc' where id=$id)";
     $result1 = mysql_query($query1);
     if (mysql_affected_rows($result1) > 0)
      echo "
    I dati sono stati aggiornati correttamente
    ";
     else
      echo "
    I dati non sono stati aggiornati
    ";    
    }

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.