php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-09-2010, 20:29
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard MySQL und UTF-8

Hallöchen.

Ich arbeite nun schon lange mit MySQL in Verbindung mit PHP, doch eine Sache hat mich immer gewundert - da ich die Sache jetzt wieder vor mir habe, will ich endlich mal Licht in die Sache bringen;

Wie verwendet man eine MySQL-Datenbank am besten in Verbindung mit PHP im Bezug auf die Umlaute und den Zeichensatz?

Folgendes Szenario:

MySQL-Datenbank-Verbindungs-Zeichensatz: utf8_general_ci
MySQL-Datenbank-Zeichensatz: utf8_general_ci
MySQL-Tabellen-Zeichensatz: utf8_general_ci
MySQL-Spalten-Zeichensatz: utf8_general_ci

PHP-Datei-Zeichensatz: UTF-8, No BOM
HMTL-Datei-Zeichensatz: UTF-8, No BOM
HTML-Header-Zeichensatz: UTF-8

PHPMyAdmin-Header-Zeichensatz: UTF-8

Ich trage per Hand etwas zum Testen in eine Spalte der Datenbank ein - Die Daten enthalten Umlaute.

Ergebnis beim Auslesen der Spalte und Anzeigen im HTML: Lustige schwarze Fragezeichen.

Was zum Teufel geht da schief? Und wieso klappt es, wenn die Daten aus PHP in die Datenbank geschrieben werden? Wie kann ich das beheben?
Mit Zitat antworten
  #2 (permalink)  
Alt 28-09-2010, 20:37
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Welchen Zeichensatz hat die Datenbankverbindung von PHP?
Mit Zitat antworten
  #3 (permalink)  
Alt 28-09-2010, 20:40
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Ich nutze PDO - dort habe ich allerdings keinerlei Einstellungen finden können, welche es mir erlauben, die Verbindung mit einem spezifischen Zeichensatz zu versehen;

PHP: PDO_MYSQL DSN - Manual
PHP: MySQL (PDO) - Manual
PHP: PDO::__construct - Manual
Mit Zitat antworten
  #4 (permalink)  
Alt 28-09-2010, 20:58
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

z. B. so:

PHP-Code:
$db = new PDO("mysql:host=" HOSTUSERNAMEPASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
$db->exec("set names 'utf8' collate 'utf8_general_ci'"); 
Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 28-09-2010, 21:06
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Über exec()? Ist das nicht ein bisschen... schwer zu beschreiben, das fühlt sich so an als obs nicht so gedacht wäre. Wieso haben die das nicht einfacher eingebaut oO?
__________________
This is what happens when an unstoppable force meets an immovable object.
Mit Zitat antworten
  #6 (permalink)  
Alt 28-09-2010, 21:14
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

In der Programmierung geht es nicht um Gefühle. Es ist richtig so. Einfacher ging es nicht, weil jedes DBMS das anders macht.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 28-09-2010, 21:21
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Is mir auch klar - Ich meinte damit nur, dass es nicht gerade der Objektorientierung, die mit PDO ja eigentlich gut umgesetzt wurde, entspricht. So eine Anweisung würde doch perfekt in den PDO-MySQL-Treiber passen, dafür gibts ja eigentlich das vierte Attribut von PDO::__construct().

Aber nunja, dennoch danke für die Mühe.
__________________
This is what happens when an unstoppable force meets an immovable object.
Mit Zitat antworten
  #8 (permalink)  
Alt 28-09-2010, 23:17
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von ApoY2k Beitrag anzeigen
Ich meinte damit nur, dass es nicht gerade der Objektorientierung, die mit PDO ja eigentlich gut umgesetzt wurde, entspricht.
Warum nicht? Es ist ein SQL-Befehl wie jeder andere, z. B. Insert. Dort schreibst du es ja auch in SQL und nicht objektorientiert, obwohl das sicher auch implementierbar wäre:

PHP-Code:
$row $db->myTable->newRow();
$row->col1 "value1";
$row->col2 2;
...
$row->insert(); 
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #9 (permalink)  
Alt 29-09-2010, 08:02
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

dieses db->exec bitte nicht mit dem (DOS) exec vermischen ....

ansonsten bliebe noch die Frage, wie du diese Daten "von Hand" eingefügt hast - wenn es via PHP funktioniert ist doch eigentlich alles in Ordnung ...

wenn "von Hand" meint, dass du phpmyadmin genommen hast - der hat eigene Zeichensatzeinstellungen, die man konfigurieren kann
wenn du es mit dem mysql-Kommandozeilentool gemacht hast - das verwendet möglicherweise den Zeichensatz, der auf dem Webserver "sonst" so läuft - das muss nicht unbedingt UTF 8 sein
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (29-09-2010 um 08:05 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 29-09-2010, 13:17
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Nein über PHPMyAdmin - dort hab ich aber auch alles komplett auf UTF-8 gestellt
__________________
This is what happens when an unstoppable force meets an immovable object.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql Ausgabe problem, supplied argument is not a valid MySQL result thx-sound PHP Developer Forum 38 28-05-2009 17:55
WAMP Win/ME MySQL Error: #2003, Cant connect to MySQL server on localhost (10050) hand Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 6 12-11-2007 00:10
Cachen von MySQL-Abfrage, Ergebnissen, HTML-Seiten und -teilen mit PHP und MySQL Lennynero BRAINSTORMING PHP/SQL/HTML/JS/CSS 3 07-09-2007 12:24
[MySQL 4.1] tab text to mySQL and mySQL values update batchas SQL / Datenbanken 1 27-02-2007 13:22
[MySQL 4.1] Speicherung von Daten MySQL 4.0 vs. MySQL 4.1 ?? lesterlong PHP Developer Forum 20 11-01-2007 08:11

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:58 Uhr.