Komprimierten String in MySQL Speichern
Dieter
- php
0 Matze0 dedlfix
0 Dieter0 Vinzenz Mai0 dedlfix
Hallo,
ich möchte einen langen Text komprimiert in meiner Datenbank speichern (um Platz zu sparen).
Dieser String soll dann bei der Ausgabe wieder dekomprimiert werden.
Die MySQL Spalte habe ich als Blob (Binary) definiert.
Das speichern sieht so aus:
if(function_exists("gzcompress"))
$save_text = @gzcompress($text);
//Alten Eintrag loeschen
mysql_query("DELETE FROM table
WHERE id
= '$id'");
//Neu abspeichern
"INSERT INTO table
(id, posttime, text) VALUES ('$id', '$time', '$save_text')";
Das laden dann so:
if(function_exists("gzuncompress"))
$text = gzuncompress($row->text);
Bei manchen Text funktioniert diese, bei anderen erhalte ich folgende Fehlermeldung:
Fehler: gzuncompress() [function.gzuncompress]: data error
Kann mir jmd. bei meinem Problem weiterhelfen?
P.S. Also die Lösung sollte sehr kompatibel sein, also unter PHP4 und 5 funktionieren, sowie unter MySQL 3,4,5.
Dies mit base64 zu codieren wäre möglich, würde aber 33% mehr Speicherplatz belegen.
MFG
Ich weiß nicht ob ich dein Problem richtig verstanden habe,
aber vielleicht hilft dir das hier weiter:
http://www.php.net/manual/de/function.pack.php
Grüße, Matze
echo $begrüßung;
//Alten Eintrag loeschen
mysql_query("DELETE FROMtable
WHEREid
= '$id'");//Neu abspeichern
"INSERT INTOtable
(id, posttime, text) VALUES ('$id', '$time', '$save_text')";
MySQL kennt auch einen UPDATE-Befehl.
Welche Maßnahmen zur Maskierung von Sonderzeichen verwendest du?
echo "$verabschiedung $name";
Hallo,
MySQL kennt auch einen UPDATE-Befehl.
ist mir bekannt, aber ich kann nicht Sicherstellen, das die ID schon in der Table vorhanden ist.
Welche Maßnahmen zur Maskierung von Sonderzeichen verwendest du?
Da lag mein Problem, habe addslashes() vergessen.
MFG
Hallo
MySQL kennt auch einen UPDATE-Befehl.
ist mir bekannt, aber ich kann nicht Sicherstellen, das die ID schon in der Table vorhanden ist.
Du kennst INSERT ON DUPLICATE KEY UPDATE?
Welche Maßnahmen zur Maskierung von Sonderzeichen verwendest du?
Da lag mein Problem, habe addslashes() vergessen.
Hast Du mal unter dedlfix Fragezeichen nachgesehen?
Für die Spalte posttime bietet sich der Datentyp TIMESTAMP an, soweit ich das sehe.
Freundliche Grüße
Vinzenz
echo $begrüßung;
MySQL kennt auch einen UPDATE-Befehl.
ist mir bekannt, aber ich kann nicht Sicherstellen, das die ID schon in der Table vorhanden ist.
Es gibt auch noch REPLACE. Das führt intern ein DELETE und INSERT aus.
Welche Maßnahmen zur Maskierung von Sonderzeichen verwendest du?
Da lag mein Problem, habe addslashes() vergessen.
addslashes() ist nicht richtig dafür geeignet. Für MySQL-gerechtes Maskieren sollte man mysql_real_escape_string() verwenden.
echo "$verabschiedung $name";