heb ik alles?
Bij het binden van values aan een query heb ik mijn database class nu zo gemaakt dat ik de volgende types kan binden:
- string
- integer
- decimal
- null
- boolean
Ik had eerst ook het type float, maar ik denk dat ik dat nooit nodig zal hebben (ik zou niet weten waarvoor), dus dat laat ik vervallen.
Ik vraag me af ik nu alle mogelijke types heb. Moet ik voor datam/tijd ook nog een apart type maken vraag ik me af? En zo ja, hoe moet je een datum/tijd doorgeven in mysql. Als een string?
Ik hoop dat iemand het antwoord weet.
http://php.net/manual/en/language.types.type-juggling.php
Als je een klein stukje naar beneden scrollt zie je een klein lijstje met datatypes, volgens mij zijn dat ze allemaal.
En als je het volgende uitvoert:
Dan geeft dat (als het goed is) 'string' weer, dus het lijkt mij dat data en tijd gewoon een string is.
Als je een klein stukje naar beneden scrollt zie je een klein lijstje met datatypes, volgens mij zijn dat ze allemaal.
En als je het volgende uitvoert:
Dan geeft dat (als het goed is) 'string' weer, dus het lijkt mij dat data en tijd gewoon een string is.
Maar houdt dit automatisch in dat het datatype voor een datum altijd een string is. (En is dit in iedere database interface zo?)
Als ik hier kijk: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html dan zie ik dat alle datatypes een string zijn, maar het datatype YEAR is volgens mij een integer? Klopt dat?
En als dit inderdaad klopt, is dan de conclusie dat alles wat met datums en tijd te maken heeft, gezien wordt als een string, behalve YEAR?
Mij werd altijd verteld dat als je niet met het getal hoeft te rekenen, het een string is en anders een 'getal' (int, double, real, float, en welke er nog meer mogen zijn).
In principe zou YEAR dan een integer zijn. (YEAR is ook altijd een uniek getal aangezien een jaar maar 1x voorkomt, je zou dus 2013 (het jaar 2013) - 10 (jaren) kunnen doen. Met maanden en dagen kan dit niet want dan zou je dingen als 1 (januari) - 2 (maanden) (= november) kunnen doen, dus dat lijken mij dan strings..)
Hmm, oke.. zou inderdaad kunnen wat je zegt. Mocht iemand nog iets willen toevoegen hoor ik het graag.
wat dacht u van een string, een array of een (lange) integer:
Code (php)
Toevoeging op 01/06/2013 09:27:30:
een float trouwens ga je vroeg of laat wel makkelijk vinden. ik zou hem er direct bij zetten.
Mag ik vragen waarom je types wilt binden of dergelijke? Alles in de een MySQL database word opgeslagen als een string, als je een integer in de database zet en hem er weer uit haalt is het een string volgens mij.
Frank Nietbelangrijk op 01/06/2013 09:21:22:
een float trouwens ga je vroeg of laat wel makkelijk vinden. ik zou hem er direct bij zetten.
done... (heb je een voorbeeldje van wanneer jij een float hebt gebruikt?)
@Hertog: bij PDO kun je (bij prepared statements) aangeven om wat voor data type het gaat. Niet alles in MySQL wordt opgeslagen als string. Denk aan bijv INT, TINYINT, FLOAT, DECIMAL. PDO kent speciale parameters om een waarde op de juiste manier te binden:
PDO::PARAM_INT
PDO::PARAM_STR
PDO::PARAM_BOOL
PDO::PARAM_NULL
PDO::PARAM_LOB (large object)
Door aan te geven om wat voor type het gaat, is PDO in staat om het op de juiste manier te binden.
Of het ehlpt, geen idee... maar ik ga er vanuit dat die types er niet voor niets zijn en dus op een of andere manier een meerwaarde opleveren.
Gewijzigd op 01/06/2013 15:05:52 door Ozzie PHP
Gewijzigd op 02/06/2013 16:46:31 door Joakim Broden
Zie data type: http://php.net/manual/en/pdostatement.bindvalue.php
En hier de PDO::PARAM_XXX constants: http://php.net/manual/en/pdo.constants.php