2016-07-05 7 views
0

Wir haben eine MEDIUMTEXT Spalte in einer Datenbank, die eine maximale Länge von ~ 16 Millionen hat. Ist es unter Berücksichtigung der Codierung und anderer Längenunterschiede sinnvoll, eine Validierungsmethode zu verwenden, die ungefähr so ​​aussieht?

if (strlen($userData['comments']) > 16777215) { ... 

oder nehme ich nur die Zeichenfolge und versuchen, sie in der Datenbank zu setzen und die gU lassen keine DB-Fehler fangen?

+1

große Frage ist, was Ihre mysql max_allowed_packet Einstellung ist. Das legt eine Grenze für die Größe einer Abfrage fest. –

+0

Es ist nicht völlig lächerlich, aber Sie haben in der Regel andere Grenzen (max_upload_size etc.), so dass Sie nie erreichen werden ... – bwoebi

+0

@MarcB Sie können vorbereitete Parameter in mehreren Chunks an mysql senden. (und somit 2^24 Bytes überschreitend, was das Maximum pro Paket ist [wie das Protokoll spezifiziert]) – bwoebi

Antwort

0

Ich würde die Grenze in MySQL und PHP auf eine angemessene maximale Länge für was auch immer die Eingabe ist niedriger. Wenn Sie die Datenbank aus irgendeinem Grund nicht ändern können, würde ich das Limit in php trotzdem senken.

Ich kann mir vorstellen, lange Kommentare gehen über 1000 oder 5000 Zeichen, aber warum sollten Sie etwas länger akzeptieren als zB. 25 000 Zeichen?

+0

hmm - Ich denke ich frage, ob es sinnvoll ist, eine Stringlänge zu validieren von dieser Größe anstelle von Änderungen an den Daten – willcwf

+1

Es ist immer sinnvoll, vor dem Einfügen zu überprüfen, vor allem mit dieser maximalen Größe. Ich kann mir nicht vorstellen, dass du sowieso einen Kommentar mit dieser Länge akzeptieren würdest, aber wenn du es willst, validiere es zumindest. – Max