Bij de bindValue method van PDO kun je aangeven om wat voor value het gaat. Een van de opties is PDO::PARAM_INT.

Wat ik me echter afvraag... stel nu de bezoeker van mijn website moet ergens zijn geboortejaar invullen, bijv. 1980.

1980 is uiteraard een getal, maar omdat het via een formulier wordt gePOST zal het binnenkomen als een string. Mijn vraag is nu of ik dan PDO::PARAM_INT of PDO::PARAM_STR?
@Ward: ik snap niet wat je bedoelt. PDO moet het juiste datatype weten om een value te kunnen binden. Mijn vraag is, als ik zorg dat de value van het juiste datatype is, of er dan iets kan misgaan?

@Ger: correct. Kun jij zeggen of mijn oplossing wel of niet juist is? Mijn idee is om te zorgen dat de value die ik doorgeef van het juiste datatype is. Vervolgens zorg ik dat aan de hand van dat datatype de juiste PDO constant wordt gebruikt als de bindValue method wordt aangeroepen. Stel de $value is 12 (een integer) dan wordt de bindValue methode als volgt aangeroepen: bindValue($value, $data_type). Omdat $value een integer is wordt het data_type automatisch ingesteld op PDO::PARAM_INT. Ik kijk dus wat $value voor datatype is en vervolgens stel ik dan $data_type op de juiste manier in. Nu hoef ik dus niet voor iedere value telkens het juiste data type mee tegeven. Ik moet alleen ervoor zorgen dat een string een string is en een integer een integer.
Ozzie PHP op 26/05/2013 20:42:53

@Ward: ik snap niet wat je bedoelt. PDO moet het juiste datatype weten om een value te kunnen binden. Mijn vraag is, als ik zorg dat de value van het juiste datatype is, of er dan iets kan misgaan?
Ik bedoelde dit:

TURBO_PDO::PARAM_YEAR_OF_BIRTH < PDO::PARAM_INT

(met het symbool 'element van' in plaats van 'kleiner dan')

In de openingspost noemde je een geboortejaar als voorbeeld. Je zou in je databaseklasse kunnen formaliseren dat een geboortejaar een striktere vorm van een PDO::PARAM_INT is waaraan de klasse strengere eisen stelt (altijd vier cijfers, om er eens een te noemen).

Reageren