Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfaches Script für Datenbankfeld-Manipulierung gesucht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einfaches Script für Datenbankfeld-Manipulierung gesucht

    ist wirklich nur ein anno-dazumal codeschnippsel, verbindung zur datenbank musst du aufbauen, dann suchstring setzen und durch was er ersetzen soll, wenn die tabellen nen primary-key haben klappts mit sicherheit, allerdings ersetzt das script in allen spalten, weis ja ned ob das ein problem ist, falls du keinen primary-key hast kann ich nicht garantieren ob es funktioniert als ich das script geschrieben habe, ist mir damals aufgefallen dass in manchen fällen es tabellen ohne nicht sauber ersetzt, allerdings hab ich damals nciht die zeit gehabt das zu überprüfen und hab die eine tabelle dann immer hänisch gemacht weil sie nur 3 einträge hatte.

    ist leider auch nur ne unkommentierte version, andere hab ich vieleicht noch zuhause, danach schau ich morgen mal falls noch interesse besteht.


    ist zwar wohl nicht ganz die lösung deines problems, aber vieleicht kannst du ja einen teil davon gebrauchen, bzw ihn abwandeln.

    PHP-Code:
    <?
    $SearchString =  mysql_escape_string('');
    $ReplaceString = mysql_escape_string('');
    $counter = 0;
    echo 'Start
    ';

    function sql_query($query,$file,$line,$debug=FALSE)    {
        global $querycounter,$__DEBUGQUERYS,$_qs;
        $sql = mysql_query($query) or die('
    '."\n".'[b]Query: [/b]'.$query.'
    '."\n".$file.'  Line: '.$line.'  
    '."\n".'Error:'.mysql_error());
        ($__DEBUGQUERYS) OR ($debug) ? print('
    '."\n".''.$query.'  
    '."\n".'[b]['.$file.' Line: '.$line.'][/b] RESULTS:<font color="red">[b]'.@mysql_num_rows($sql)."[/b]</font>\n".'
    '):null;
        $querycounter++;
        return $sql;
    }

    function is_text_field($field) {
        if(eregi('varchar',$field['Type']) OR eregi('blob',$field['Type']) OR eregi('text',$field['Type']))    {
            Return true;
        }
        else    {
            Return false;
        }
    }
    function scantable($table) {
        global $SearchString,$ReplaceString,$counter;
        $query = "SHOW FIELDS FROM `".$table."`";
        $sql = sql_query($query,__FILE__,__LINE__);
        $fields = array();
        while($data = mysql_fetch_assoc($sql)) {
            if(is_text_field($data)) {
                $fields[] = $data['Field'];
            }
            if($data['Key'] == 'PRI') {
                $PRIMARY = $data;
            }
        }
        if(count($fields) > 0) {
            $search = '';
            $fieldlist = '';
            $where = '';
            $update = '';
            foreach($fields as $val) {
                $search .= "`".$val."` LIKE '%".$SearchString."%' OR \n";
                $fieldlist .= "`".$val."`, ";
            }
            if(isset($PRIMARY)) {
                $fieldlist .= "`".$PRIMARY['Field']."`, ";
            }
            $query2 = "SELECT ".substr($fieldlist,0,-2)." FROM `".$table."`  WHERE ".substr($search,0,-5);
            $sql2 = sql_query($query2,__FILE__,__LINE__);
            while($data2 = mysql_fetch_assoc($sql2)) {
                foreach($fields as $val) {
                    $data3[$val] = str_replace($SearchString,$ReplaceString,$data2[$val]);
                    $update .= "`".$val."` = '".addslashes($data3[$val])."', \n";
                    $where .= "`".$val."` = '".addslashes($data2[$val])."' AND \n";
                }
                if(isset($PRIMARY)) {
                    $where = "`".$PRIMARY['Field']."` = '".addslashes($data2[$PRIMARY['Field']])."'";
                    $query3 = "UPDATE `".$table."` SET ".substr($update,0,-3)." WHERE ".$where;
                }
                else {
                    
                    $query3 = "UPDATE `".$table."` SET ".substr($update,0,-3)." WHERE ".substr($where,0,-6);
                }
                $counter += mysql_affected_rows();
                sql_query($query3,__FILE__,__LINE__);
            }
        }
    }

    $query = "SHOW TABLES";
    $sql = sql_query($query,__FILE__,__LINE__);
    while($data = mysql_fetch_assoc($sql)) {
        scantable($data['Tables_in_'.$DBNAME]);
    }
    echo 'Fertig';
    echo '
    Datensätze gefunden und versucht zu verändert: '.$counter;
    ?>
    [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
    | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

  • #2
    Zitat von robo47
    ist wirklich nur ein anno-dazumal codeschnippsel, verbindung zur datenbank musst du aufbauen, dann suchstring setzen und durch was er ersetzen soll, wenn die tabellen nen primary-key haben klappts mit sicherheit, allerdings ersetzt das script in allen spalten, weis ja ned ob das ein problem ist, falls du keinen primary-key hast kann ich nicht garantieren ob es funktioniert als ich das script geschrieben habe, ist mir damals aufgefallen dass in manchen fällen es tabellen ohne nicht sauber ersetzt, allerdings hab ich damals nciht die zeit gehabt das zu überprüfen und hab die eine tabelle dann immer hänisch gemacht weil sie nur 3 einträge hatte.
    ist das wirklich ein satz ?
    Was ist validität?

    Kommentar


    • #3
      Vorschlag:
      In einer MYSQL-DB ist folgendes machbar:
      Code:
      "
      UPDATE tabelle SET
         sortsw1 = REPLACE(sortsw1, 'ß', 'ss'),
         sortsw1 = REPLACE(sortsw2, 'ß', 'ss'),
         sortsw1 = REPLACE(sortsw2, 'ß', 'ss')
      ";
      _____________
      mfG -dilemma-

      Kommentar


      • #4
        @admin:
        nach meiner Uhrzeit habe ich meine verhergehende Antwort um ca: 14:50 Uhr
        abgeschickt.
        Zu einem Zeitpunkt, als diese beiden Antworten von 'zeusel' schon angezeigt wurden:
        Verfasst am: 27.12.2004, 14:36
        Verfasst am: 27.12.2004, 14:50

        Frage:
        Warum erscheint mein Beitrag mit der Uhrzeit 27.12.2004, 14:11 ?????????

        mfg -dilemma-

        Kommentar


        • #5
          Zitat von fantast
          Zitat von robo47
          ist wirklich nur ein anno-dazumal codeschnippsel, verbindung zur datenbank musst du aufbauen, dann suchstring setzen und durch was er ersetzen soll, wenn die tabellen nen primary-key haben klappts mit sicherheit, allerdings ersetzt das script in allen spalten, weis ja ned ob das ein problem ist, falls du keinen primary-key hast kann ich nicht garantieren ob es funktioniert als ich das script geschrieben habe, ist mir damals aufgefallen dass in manchen fällen es tabellen ohne nicht sauber ersetzt, allerdings hab ich damals nciht die zeit gehabt das zu überprüfen und hab die eine tabelle dann immer hänisch gemacht weil sie nur 3 einträge hatte.
          ist das wirklich ein satz ?
          :P ich hab jemand auf den ich es schieben kann:P
          -> meine tastatur hier @ work, die ist s******, ich bin zu stark an meine @ home gewöhnt, sobaldi ch auf ner tastatur zu schnell tippe die ned meine ist, wirds irgendwie immer böse :P
          [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
          | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

          Kommentar


          • #6
            Einfaches Script für Datenbankfeld-Manipulierung gesucht

            Hallo Ihr,

            habe nen kleines Problem und zwar habe ich hier eine Tabelle mit ca. 3000 Datensätzen und ich möchte, dass in Spalte 6, 7 und 8 die Spalten heißen: sortsw1, sortsw2, sortsw3 alle ß durch ss ersetzt werden und die Spalten auch so gleich geupdated werden. Hat jemand da ein paar Codezeilen für mich?

            Kommentar


            • #7
              Achherrjeeee....sieht ja erst mal kompliziert aus, aber ich denke die Zeilen, die ich brauche hab ich gefunden...Danke

              Kommentar


              • #8
                Zitat von fantast

                ist das wirklich ein satz ?
                Es gibt Leute die geilen sich an alles auf

                Kommentar


                • #9
                  Ui thx Dilemma...das ist natürlich noch viel besser

                  Kommentar

                  Lädt...
                  X