Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Mit PHP Insert auf SQL Datenbank [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




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

 
Kropff
23-02-2005, 10:03 
 
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!

 
Wurzel
23-02-2005, 10:20 
 
vielleicht willst du dich hier mal informieren?!
http://dev.mysql.com/doc/mysql/de/column-types.html

 
wahsaga
23-02-2005, 10:21 
 
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

 
wahsaga
23-02-2005, 10:38 
 
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.

 
Kropff
23-02-2005, 10:50 
 
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!)

 
Kropff
23-02-2005, 10:56 
 
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.

 
Wurzel
23-02-2005, 11:01 
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:05 Uhr.