php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.08.2007, 15:17  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard Mysql-String prüfen und Umlaute ändern

Hallo Leute

Ich hab ein kleines Problem. Der Titel ist leider nicht sehr treffend aber mir fällt momentan gerade nichts bessers ein:

Ich habe eine Klasse, in welcher meine Mysql-Funktionen sind. Jeder Query landet schlussendlich hier:

PHP-Code:
    private function db_query($query_string)    {
        
$query_string htmlentities($query_string);
        
$request mysql_query($query_string)
            or die(
Mysql::report_error("Query: ".mysql_error()."\n".$query_string));
        return 
$request;
    } 
Das hat bis anhin gut geklappt, allerdings bekomme ich nun Probleme beim Login-Script:

Da meine User Namen mit Umlauten haben, muss ich das überprüfen. Die Eingabe Mäke ist beispielsweise als Mäke in der Datenbank abgelegt. Jedoch kann ich so keine Vergleichsoperatoren im Query-String benützen, da ein Grösser als (>) in > umgewandelt wird, was logischerweise in einem Error endet.
Ebenfalls habe ichs mit mysql_(real)_escape_string versucht, was auch kein befriedigendes Ergebnis geliefert hat. Aus "SELECT row FROM table WHERE name='row_name'" wurde "SELECT row FROM table WHERE name=\'row_name\'", was dann zu einem Fehler führte.

Hat jemand eine Idee, wie ich die Zeichenumwandlung von Umlaut x zu &xuml; mit gleichzeitiger Nicht-Umwandlung von < und > unter einen Hut bringe? Natürlich könnte ich einfach die Umlaute über str_replace manuel umwandeln. Ist das die einzige Lösung oder kennt ihr da eine gescheitere?

Gruss Igäl
Igäl ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.08.2007, 15:56  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

htmlentities() ist hier fehl am Platz. Damit kodierst du - tada HTML Enititäten. Eine Datenbank kennt kein HTML, es kennt nur Daten. Die Ausgabe beschränkt sich ja nicht auf HTML. Denkbar wäre OpenOffice, PDF, Grafiken sogar, ..
Gut, meistens ist es einzig und allein HTML, aber siehst ja was bei rumkommt, wenn man nicht pure Daten, sondern formatierte Daten in der DB stehen hat.

Bei mysql_real_escpae_string() musst du beachten, was get_magic_quotes_gpc() liefert. Dazu mehr im Manual oder hier im Forum, das Thema hatten wir schon zur Genüge ..
Zergling-new ist offline  
Alt 09.08.2007, 16:03  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

Jo ich wusste nicht genau, wonach ich suchen soll. Siehe Titel... Das Problem ist halt merkwürdig. Jo das htmlentities HTML-Entitäten kodiert war mir klar, doch bis anhin wars das was ich im Script brauche. Werde deinen Tip beherzigen und mich mal im Manual zum Thema get_magic_quotes_gpc() umsehen.

Danke dir.
__________________
Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
Mark Twain
Igäl ist offline  
Alt 09.08.2007, 17:09  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Schreibe doch die Orginaldaten in die DB und benutze htmlentities() für die Ausgabe. Dafür ist diese Funktion eigentlich da.
Aber selbst wenn du die Entities in der DB speichen willst, muss das gehen, allerdings musst du dann nicht die Abfrage codieren, sondern nur die entsprechenden Daten (z.B. der Username). Und diese enthalte ja normalerweise keine "><"-Zeichen. Und das muss dannselbstverständlich noch vor dem Aufruf der Funktion geschehen.
__________________
Gruss
L
lazydog ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql query browser + umlaute gugu Datenbanken 10 28.03.2009 19:15
Umlaute nach CSV Import in MySQL Javahasser Datenbanken 4 25.07.2008 19:43
wieder mal php umlaute und mysql nieselfriem Datenbanken 5 30.11.2007 13:36
webseite mysql umlaute und utf-8 nieselfriem PHP Tipps 2008 1 22.10.2007 00:04
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Spaltennamen (mySQL) mit String vergeichen? &lt;Daniel&gt; PHP Tipps 2006 4 05.07.2006 10:42
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] Umlaute in MySQL Datenbanken 1 21.08.2005 20:00
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
procmailrc - php-script - MySQL - umlaute mit TXT PHP-Fortgeschrittene 7 25.02.2005 11:41
MYSQL trägt keine deutschen Umlaute ein. sharky PHP Tipps 2004-2 12 14.12.2004 08:00
MySQL Umlaute werden in PHP nicht richtig angezeigt PHP Tipps 2004 5 25.10.2004 20:36
String zu mysql - konformem Datum konvertieren Stümper PHP Tipps 2004 9 18.09.2004 11:49
MySQl akzeptiert keine Umlaute :( Datenbanken 6 20.08.2004 13:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2007/44550-mysql-string-pruefen-und-umlaute-aendern.html, mysql string ändern, mysql string prüfen, mysql string umlaute, mysql auf string prüfen, mysql string sonderzeichen, umlaute in mysql ändern, mysql umlaute prüfen, mysql string umlaut, mysql umlaute konvertieren, mysql string verändern, mysql zeichenkette prüfen, string bearbeiten mysql, umlaute mysql ändern, php string auf umlaute prüfen, mysql auf umlaute prüfen, mysql string bearbeiten, php mysql umlaute umwandeln, php mysql string prüfen, php mysql string umlaute

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:48 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.