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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 07-08-2008, 15:00
norodon
 Registrierter Benutzer
Links : Onlinestatus : norodon ist offline
Registriert seit: Apr 2008
Beiträge: 55
norodon ist zur Zeit noch ein unbeschriebenes Blatt
Standard Alle TEXTfelder werden als BLOB dargestellt

Hiho,

ich habe folgendes Problem:

Ich habe eine Datenbank mit einigen Tables, wie z.b. ein Table um Kategorien anzuzeigen:

Name Typ Kollation
id int(11) -
name text utf8_bin
parent int(11) -


Soweit sogut, es funktioniert auch alles Ausnahmslos, will ich mir jedoch den Inhalt der Datenbank anzeigen lassen in phpMyAdmin so steht überall dort wo ein Textfeld ist [BLOB - X Bytes] (x=Länge). In HeidiSQL genauso. Was läuft da schief? Bevor ich auf utf8 umgestellt habe konnte ich mir alles anschauen.

Zudem meine Frage: Sollte ich besser auf UTF8_bin oder _unicode stellen?

Bin in Datenbanken nicht so bewandert.
Mit Zitat antworten
  #2 (permalink)  
Alt 07-08-2008, 15:17
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Seit MySQL 5 sind eigentlich TEXT-Datentypen eigentlich überflüssig, da VARCHARS genauso viel Daten aufnehmen können.
Dein Problem kann ich allserdings nicht nachvollziehen. Attribute vom Typ TEXT (oder LONGTEXT) und CHARACTER SET (die Kollation ist hier nicht von Bedeutung) utf8 werden problemlos angezeigt.
Erst wenn ich den den Typ auf BLOB ändere, zeigt sich dieses (in dem Falle logische) Verhalten
__________________
Gruss
H2O
Mit Zitat antworten
  #3 (permalink)  
Alt 07-08-2008, 16:11
norodon
 Registrierter Benutzer
Links : Onlinestatus : norodon ist offline
Registriert seit: Apr 2008
Beiträge: 55
norodon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

- Doppelt sorry -

Geändert von norodon (07-08-2008 um 16:16 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 07-08-2008, 16:14
norodon
 Registrierter Benutzer
Links : Onlinestatus : norodon ist offline
Registriert seit: Apr 2008
Beiträge: 55
norodon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich werde es mal mit varchars ausprobieren, evtl schafft das Abhile. Es ist beim Programmieren sehr mühselig immer in einen Eintrag "reinschauen" zu müssen bevor man weiß, was drin steht.

Wie gesagt es steht alles auf Text und es zeigt sich das BLOB typische Verhalten. Interessanter Weise sowohl auf meinem lokalen Testrechner, als auch auf dem Server wo es letztendlich mal laufen soll.

Wenn ich das grad richtig sehe, muss man bei Varchar eine Länghe angeben. Was ist, wenn ich die Länge (bei einem GB Eintrag, Forenbeitrag etc) nicht kenne?


Edit:
Wenn ich die Felder auf Varchar stelle sehe ich deren Inhalt wieder.

Geändert von norodon (07-08-2008 um 16:19 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 07-08-2008, 16:20
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

dafür ist ja gerade varchat geeignet (variable character)

varchar bekommt eine maximale länge mitgeteillt und nimmt dann die größe an die es nur braucht.

deswegen ist es auch langsamer als char ... aber chat reserviert immer die angegebenen zeichen

bei md5 hash werten (passwort) nehme ich z.b. immer char32 .. da ein md5 hash genau so groß ist und sich nicht ändert (von der länge her)

benutzernamen und ähnliche dinge bekommen einen groben wert ... varchar(25) z.b.
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #6 (permalink)  
Alt 07-08-2008, 17:13
norodon
 Registrierter Benutzer
Links : Onlinestatus : norodon ist offline
Registriert seit: Apr 2008
Beiträge: 55
norodon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was würdest du für das Speichern eines Forenbeitrags denn für eine Länge empfehlen? Bzw verwenden?
Mit Zitat antworten
  #7 (permalink)  
Alt 07-08-2008, 18:22
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

ich text .. bei mir funkt das auch (myisam)
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #8 (permalink)  
Alt 07-08-2008, 22:05
norodon
 Registrierter Benutzer
Links : Onlinestatus : norodon ist offline
Registriert seit: Apr 2008
Beiträge: 55
norodon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das bringt MIR aber nichts

Weiterhin wäre noch die Frage utf8_bin oder unicode? Wo ist der unterschied? Was sollte man nehmen?


Meine Blobs sind noch immer da :-\
Mit Zitat antworten
  #9 (permalink)  
Alt 08-08-2008, 08:26
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

wenn du dein text-feld von utf8-bin auf latin1_german2_ci änderst hast du wieder das alte gewohnte textfeld verhalten
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #10 (permalink)  
Alt 08-08-2008, 08:54
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von norodon

Weiterhin wäre noch die Frage utf8_bin oder unicode? Wo ist der unterschied? Was sollte man nehmen?
utf8 ist unicode. Ausserdem habe ich dir schon mal gesagt, dass die Kollation nichts damit zu tun hat.
Ich habe jetzt auf alle möglichen Arten versucht, dein Problem Nachzuvollziehen:
CHARACTER SETs: latin1, utf8, ucs2
ENGINES: MyIsam, ImmoDB
Datentypen: VARCHAR(60000), MEDIUMTEXT, TEXT, LONGTEXT, BLOB
Ausser bei BLOB habe ich dieses Verhalten nirgends gesehen.
Interessant dabei ist, das unter utf8 varchars von mehr als 21841 Zeichen Länge in MEDIUMTEXT, bzw TEXT umgewandelt werden; d.h. die maximale Länge für varchar ist nicht 65535 Zeichen, sondern Bytes.
Hast du mal versucht die Daten im MySQL-Monitor auszugeben. Dort werden normalerweise sogar BLOB-Daten, soweit möglich, korrekt ausgegeben.
__________________
Gruss
H2O

Geändert von H2O (08-08-2008 um 08:56 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 08-08-2008, 13:42
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

ich hatte das vorhin auch gehabt.

Server Version: 5.0.51b-community-nt
MySQL-Client-Version: 5.0.11-beta
Verwandte php-Erweiterungen: mysql

tabelle innodb (myisam geht auch)
attribut: text OHNE größenangaben
kollation: utf8-bin
textfeld wird als blob behandelt

tabelle innodb (myisam geht auch)
attribut: text OHNE größenangaben
kollation: latin1_german2_ci
textfeld wird als textfeld behandelt
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #12 (permalink)  
Alt 08-08-2008, 13:53
norodon
 Registrierter Benutzer
Links : Onlinestatus : norodon ist offline
Registriert seit: Apr 2008
Beiträge: 55
norodon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Haargenau dasselbe Verhalten bei mir wie bei UzumakiNaruto. Stelle ich auf latin1_german2_ci werden meine Textfelder als Texte dargestellt. Bei utf8 als Blobb, wie gehabt.

In der Konsole wird es als Text ausgegeben. Demnach liegt es evtl. an myPhpAdmin?

MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_bin

@H2O
Ich habe mich lediglich gewundert, dass es zur auswahl utf8_bin und utf8_unicode gibt.
Mit Zitat antworten
  #13 (permalink)  
Alt 08-08-2008, 14:03
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:

da ich meine beiträge nicht ändern kann ( warum ) muss ich wohl einen neuen machen.

Es ist Dir not erlaubt, Deine Beiträge zu bearbeiten.



ich habe die aktuellste PMA version (2.11.8.1)

SELECT * FROM TABELLE
PMA [BLOB - 11 Bytes]
HeidiSQL (MEMO)

schon komisch kann also nicht an PMA liegen
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #14 (permalink)  
Alt 08-08-2008, 14:06
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok ich muss mich entschuldigen, es hat tatsächlich doch mit der Kollation zu tun. Das Problem tritt allerdings (von den von mit getesteten Varianten) nur nut utf8_bin auf, und ist kein MySQL-, sondern ein PMA-Problem. Im MySQL-Monitor werden auch diese Texte korrekt angezeigt. Und auch mit PHP funktioniert das problemlos.
[edit]
Ich persönlich benutze eigentlich immer utf8_general_ci.
__________________
Gruss
H2O

Geändert von H2O (08-08-2008 um 14:09 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 08-08-2008, 14:22
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von H2O
Ok ich muss mich entschuldigen, es hat tatsächlich doch mit der Kollation zu tun. Das Problem tritt allerdings (von den von mit getesteten Varianten) nur nut utf8_bin auf, und ist kein MySQL-, sondern ein PMA-Problem. Im MySQL-Monitor werden auch diese Texte korrekt angezeigt. Und auch mit PHP funktioniert das problemlos.
[edit]
Ich persönlich benutze eigentlich immer utf8_general_ci.
und wie erklärst du dir das memo in heidisql??
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
Antwort

Lesezeichen


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

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:34 Uhr.