PDA

Volledige versie bekijken : groot text-veld in MySQL-database


Spom
%Europe/Berlin %493 %2005, 12:50
Hallo Ik heb even een hele domme vraag :#
Als ik in een MySQL database een text veld voor heel veel tekst moet hebben wat is dan het soort veld wat ik moet kiezen. Gewoon text geeft te weinig ruimte. Of is het misschien mogelijk om voor text een grootte mee te geven net als bij int, varchar etc.?

Alvast bedankt

brossiekoppie
%Europe/Berlin %574 %2005, 14:47
Eerst en vooral: domme vragen bestaan (bijna :D ) niet. Dit is er toch alleszins geen.

Voor tekst heb je in mysql 11 kolomtypen:

char (255), varchar (255), tinytext (255), text (65535), mediumtext (16777215), longtext (429496295), blob (65535) (binary large object), mediumblob (16777215) , tinyblob (255), longblob (429496295)

Als ik me niet vergis is blob hetzelfde als text maar dan case-sensitive.

De getallen wijzen logischerwijs op het aantal karakters ze kunnen bevatten.

De Kale
%Europe/Berlin %416 %2005, 11:00
TEXT is een goed type om mee te spelen.
Hier moet het toch wel mee kunnen denk ik.
TEXT velden kun je ook indexeren op _alle_ text die erin zit, dus als je gaat zoeken hierin kun je daar ook rekening mee houden.
BLOB is idd TEXT maar dan case sensitive..
LET OP:
de text in een TEXT veld wordt wel opgeslagen met behoud van case, maar het zoeken gebeurt case insensitive.

Cage
%Europe/Berlin %671 %2005, 17:07
En dit kan je heel makkelijk aanpassen met phpMyAdmin (http://www.phpmyadmin.net) [:o)]

brossiekoppie
%Europe/Berlin %900 %2005, 22:37
TEXT is een goed type om mee te spelen.
Hier moet het toch wel mee kunnen denk ik.
TEXT velden kun je ook indexeren op _alle_ text die erin zit, dus als je gaat zoeken hierin kun je daar ook rekening mee houden.
BLOB is idd TEXT maar dan case sensitive..
LET OP:
de text in een TEXT veld wordt wel opgeslagen met behoud van case, maar het zoeken gebeurt case insensitive.

De specifieke raad liet ik natuurlijk over aan de gecertificeerde mysql gebruiker van dit forum ;)

nielsverwegen
%Europe/Berlin %638 %2005, 16:20
verchar was dacht ik ook goed genoeg voor gemiddelde textvlakken,
niet al te groot hoor maar tot 250 tekens ofzo (weet dat niet zeker) maar het is wel een feit dat de laadtijd van text of blob groter is dan die van verchar

fastshifter
%Europe/Berlin %413 %2006, 10:54
via google kwam ik bij dit onderwerp in dit forum. Hier heb ik ook een vraag over, aangezien ik een eigen gastenboek op internet heb staan, waar ineens zich een vreemd probleem voordoet. Hij accepteerd in principe alle berichten, maar het lijkt wanneer er een " ' " of een " \ " in het bericht voorkomt, hij zonder melding het bericht niet kan toevoegen aan de database op de server. :S

De database op de server voor het bericht zelf heb ik als text ingericht, en denk dus dat deze die tekens niet ondersteund oid... moet ik dan misschien iets anders dan text gebruiken om te zorgen dat hij die tekens ook gebruikt? want het komt nogal regelmatig voor dat er berichten getypt worden die niet in het gastenboek opgenomen worden.. beetje vervelend...

kan iemand mij helpen?? 8~

TheZwier
%Europe/Berlin %548 %2006, 14:10
Gebruik voordat je je bericht in je query toevoegt dit om je bericht veilig te maken voor mysql-injecties, ik denk dat hij het dan wel doet..
$bericht = mysql_real_escape_string($bericht)

fastshifter
%Europe/Berlin %584 %2006, 15:01
Dat werkt! :D bedankt! :D

brossiekoppie
%Europe/Berlin %643 %2006, 16:25
Gebruik voordat je je bericht in je query toevoegt dit om je bericht veilig te maken voor mysql-injecties, ik denk dat hij het dan wel doet..
$bericht = mysql_real_escape_string($bericht)

mysql_real_escape_string is inderdaad de enige goede oplossing maar je moet wel oppassen dat er reeds een connectie open is met de database anders krijg je een foutmelding (je kan dus niet zomaar alle addslashes vervangen door mysql_real... waar nogal vaak fouten tegen worden gemaakt).