Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit PHP Insert auf SQL Datenbank
neo2003i 23-02-2005, 10:02 Hallo @all,
ich habe folgendes Problem:
Mittels PHP mache ich einen Insert von zwei Textfeldern in
eine Tabelle.
In der SQL Tabelle ist:
Textfeld a ist mit varchar(4000),
Textfeld b mit text(16) deklariert.
Der Text, den ich in den beiden Feldern speichere hat eine länge von
365 Zeichen.
Beim Insert läuft alles nach Plan.
Wenn ich die beiden Texte nun per Select wieder auslese,
passiert folgendes:
Der Text von Textfeld b wird komplett ausgelesen,
Der Text von Textfeld a wird nach 256 Zeichen einfach abgeschnitten.
Kann mir jemand sagen, warum das so ist?
mfg
neo2003i
varchar geht nur bis 255
gruss
peter
neo2003i 23-02-2005, 10:18 Danke erstmal für die schnelle Antwort.
Gibt es da keine andere Möglichkeit, mit varchar längere Texte zu speichern?
XGremliN 23-02-2005, 10:20 Nö, nimm dann einfach Text!
vielleicht willst du dich hier mal informieren?!
http://dev.mysql.com/doc/mysql/de/column-types.html
Original geschrieben von neo2003i
Gibt es da keine andere Möglichkeit, mit varchar längere Texte zu speichern?
wenn man dir schon sagt, dass es nicht möglich ist, drei dutzend leute auf ein mal mit einem mini cooper durch die gegend zu fahren - wieso schaust du dich dann nicht nach einem größeren auto (http://dev.mysql.com/doc/mysql/de/blob.html) um?
neo2003i 23-02-2005, 10:25 Original geschrieben von wahsaga
wenn man dir schon sagt, dass es nicht möglich ist, drei dutzend leute auf ein mal mit einem mini cooper durch die gegend zu fahren - wieso schaust du dich dann nicht nach einem größeren auto (http://dev.mysql.com/doc/mysql/de/blob.html) um?
Weil ich es nicht verstehe, beim Insert wird ja auch der gesamte Text gespeichert (mehr als 255 Zeichen). Warum schneidet er den Text dann beim Select ab?
Gruß neo2003i
Original geschrieben von neo2003i
Weil ich es nicht verstehe, beim Insert wird ja auch der gesamte Text gespeichert (mehr als 255 Zeichen).
woraus ziehst du diesen vollkommen unsinnigen schluß?
du gießt einen liter wasser in ein 0,2 liter glas, und behauptest dann, es sei jetzt alles im glas - selbstverständlich blödsinn.
Warum schneidet er den Text dann beim Select ab?
da schneidet er nichts ab, es sind bereits nur noch 225 zeichen vorhanden.
neo2003i 23-02-2005, 10:45 Original geschrieben von wahsaga
woraus ziehst du diesen vollkommen unsinnigen schluß?
du gießt einen liter wasser in ein 0,2 liter glas, und behauptest dann, es sei jetzt alles im glas - selbstverständlich blödsinn.
da schneidet er nichts ab, es sind bereits nur noch 225 zeichen vorhanden.
Weil dem so ist.
Ich habe in meiner MSSQL Datenbank das Feld mit varchar(4000) deklariert.
Mit Insert einen text (354 Zeichen) komplett gespeichert. (Hab mir den datenbank eintrag nochmal angesehen - der Text ist komplett gespeichert).
Beim Insert liefert er mir dann nur einen Teil des Textes zurück.
Es tut mir leid wenn ihr mir nicht glaubt, aber es ist wirklich so.
MS SQL oder MySQL, wenn MS SQL dann muss ich passen, da ich nicht weiss ob man da mit varchar (4000) arbeiten kann.
gruss
peter
neo2003i 23-02-2005, 10:51 MS SQL
gruß
neo2003i
XGremliN 23-02-2005, 10:55 Ich kapier immer noch nicht, warum du unbedingt weiterhin VARCHAR benutzen willst, anstatt TEXT.
(Wenn du viel zu schreiben hast nimmst du VARCHAR und wenn wenig zu schreiben ist TEXT - ich versteh dich echt nicht! Das ist irgendwie unlogisch!)
Wenn du viel zu schreiben hast nimmst du VARCHAR und wenn wenig zu schreiben ist TEXT - ich versteh dich echt nicht! Das ist irgendwie unlogisch!
du meinst sicher anders herum.
peter
XGremliN 23-02-2005, 10:58 Ich hab gesagt, wie er das zur Zeit macht. Das ist unlogisch. Andersrum wäre es ja richtig, aber das macht er ja nicht.
lesen bildet:Buried away in the mssql_field_length documentation is an important limitation that it is certainly worth knowing about *BEFORE* you do any database design:
Note to Win32 Users: Due to a limitation in the underlying API used by PHP (MS DbLib C API), the length of VARCHAR fields is limited to 255. If you need to store more data, use a TEXT field instead.
SQL Server natively supports VARCHAR up to 8000 characters. Note that TEXT fields have substantially poorer performance (and are much more limited) than VARCHAR so you may want to design your databases accordingly...
You can also work around this limitation with the following:
-- for example, with MyVarCharField VARCHAR(1000)
SELECT CAST(MyVarCharField AS TEXT) FROM MyTable
QUELLE: http://php3.de/manual/de/ref.mssql.php => UCN
|
|