| | | | |
| |||||||
| Datenbanken SQL und Co |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Mit dem Post hilfst du der Nachwelt nur wenig bis garnicht. MySQL unterstützt ein Breites Zeichensatzmodell, in jedem Fall ist es wichtig MySQL beim insert der Daten das richtige Encoding zu liefern das MySQL für diese Tabelle auch nutzt. ( Source-Charset <-> Destination-Charset ), gleiches gilt für das abfragen von Daten bei dem Grundsätzlich vom Script / von der API verstanden werden muss was MySQL liefert und ob es im Folge der Datenpublikation das Encoding selbstständig verändern muss. Du gehst hin und replaced in der Datenbank "miss-spelled Signs" gegen ihr "current used Charset"-Equivalent. Grundsätzlich evaluierst du aber nicht die Charset-Symbiose wie oben beschrieben, du patcht nur optische Probleme. Ein gutes "Tool" gräbt alle Daten aus der Datenbank stück für stück aus und replaced alle Datensätze korrekt encoded zurück in die Datenbank, was Grundsätzlich sogar innerhalb der Datenbank passieren kann. Wie bei allen Encoding-Issues muss man allerdings wissen in welchem Encoding die Daten dort eingefügt wurden, hat man kenntniss darüber dürfte ein temporäres Transcoding einer Tabelle mit referenz auf ein SELECT-Statement mit ausgelieferte COLLATE-Angabe seinen Job tun, das Zieltable würde angeben als was du encoden willst, COLLATE entsprechend im SELECT-Statement als was MySQL die Inhalte der Columns interpretieren soll. Grundsätzlich aber im Table rumzuklecksen, halte ich für die vollkommen falsche Vorgehensweise. Von daher: @nikosch -> FULL ACK Außerdem: Dein Script hinkt, du nutzt Error-Supression, für mich ein klares Zeichen das dich Fehler nicht interessieren und auch Fehler nicht den User des Scripts interessieren sollen. Fehler unterdrückt man nicht, Fehler wertet man aus und reagiert entsprechend. Auch mit Schleifen sich durch Daten zu graben sei ja vielleicht eine generell gute Möglichkeit. Sich allerdings nur auf mysql_num_rows() zu verlassen bindet das ganze ein Stückweit an wirklich nur eine Datenbankplattform und auch wirklich nur an ein Driver-Modell. Viele ( und vielleicht auch zukünftige MySQL-Driver ) liefern keine mysql_num_row-Daten aus, so das man, wenn man schon wissen will wieviele Rows dort reinkommen, vorher entsprechend mit Code: SELECT COUNT(*) as countOf FROM yourTable WHERE yourExpression = 'match this here' Generell: Du gehst bei deinem Script fest davon aus das der zugrundeliegende Datenbestand grundsätzlich SGML ist, SGML ( HTML, XML ) hat aber im Prinzip nix in der Datenbank verloren, sondern würde ( wenn überhaupt ) erst in der Darstellenden Schicht der Anwendung die sich die Daten holt aus dem zur Verfügung stehenden Encoding erzeugt werden. Ein Beispiel wäre hier ein Benutzername der äüö's enthält. Dein Source würde dort beim reparieren der Tabelle entsprechend das SGML-Equivalent rein-replacen, geht die Anwendung nun hin und fragt bei einem Login-Vorgang die Tabelle ab ob user Läüös existiert ( was er ja ohne SGML tun würde ), sagt die Datenbank ihm: Nö. Fatales Ergebnis.
__________________ Geändert von tr0y (12.02.2012 um 11:27 Uhr). |
| | |
| | ||
| Erfahrener Benutzer | Zitat:
PHP-Code:
__________________ | |
| | |
| | |
| Erfahrener Benutzer |
__________________ |
| | |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Der vorgeschlagene Code ist zudem hochgradig ineffizient, weil jedes Zeichen in verschachtelten Anfragen einzeln ersetzt wird. In einem DB Dump ließe sich so etwas wesentlich effizienter erreichen.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Wert aus einer Tabelle mit Daten aus einer anderen Tabelle ersetzen | bigdaddy83le | PHP Einsteiger | 8 | 21.07.2011 14:23 |
| [Erledigt] Tabelle in Abhängigkeit einer anderen Tabelle | Quu | Datenbanken | 8 | 26.06.2011 14:15 |
| Bestehende php /Myqsl Tabelle Neben einander aus geben | Totti-Totti | PHP Tipps 2009 | 3 | 21.12.2009 11:00 |
| variable Zeichen ersetzen | Menuhin | Datenbanken | 12 | 02.09.2009 16:00 |
| Zeichen in allen Datensätzen ersetzen | halskrause | Datenbanken | 3 | 14.03.2009 20:34 |
| wert aus einer tabelle mit wert aus andere tabelle ersetzen | lindner | Datenbanken | 3 | 11.07.2006 17:20 |
| Problem: Zeichen in ganzer Tabelle ersetzen | Datenbanken | 1 | 03.12.2005 21:21 | |
| [Erledigt] Zeichen ersetzen in einem Dokument | PHP Tipps 2007 | 16 | 25.11.2005 14:16 | |
| auf Mysql Datenbank Zeichen ersetzen durch andere ??? | Tango | Beitragsarchiv | 1 | 01.08.2005 01:48 |
| auf Mysql Datenbank Zeichen ersetzen durch andere ??? | Tango | PHP Tipps 2005-2 | 0 | 31.07.2005 20:14 |
| [Erledigt] Ein Zeichen durch ein anderes ersetzen | PHP Tipps 2005 | 1 | 17.02.2005 08:52 | |
| HILFE: Column count doesn't match value count at row 1 | Datenbanken | 17 | 12.06.2004 16:45 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| mysql zeichen austauschen, mysql umlaute ersetzen, mysql ersetzen zeichen, php sonderzeichen in umlaute ersetzen, php mysql umlaute umwandeln, php mysql ersetzen umlaute, mysql datenbank zerstören, mysql zeichen in kompletter datenbank erstetzen, sonderzeichen ersetzen in mysql mit php, mysql ersetzen von zeichen, daten ersetzen php mysql skript |