PDO::PARAM_INT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end developer gezocht

Functie Je komt in een team met ambitieuze developers die de passie voor Front-End met jou delen. Samen ga je aan de slag met leuke en leerzame opdrachten. Het team heeft een eigen budget en financiën en zij bepalen zelf hoe dat besteed en investeert wordt. Je gebruikt tools als JavaScript, Node.js, React, Angular, Typescript en Vue.js wanneer je werkt aan de opdrachten. Daarnaast zul je veel leren van je collega’s en gezamenlijk een leuke tijd doorbrengen tijdens activiteiten zoals wintersport, hackatons en conferentiebezoeken. Je krijgt niet alleen de mogelijkheid Front-End te ontwikkelen, maar ook vooral jezelf. Dit kan behaald

Bekijk vacature »

Medior PHP Developer

Functie omschrijving Ben jij een getalenteerde PHP Developer en aan de slag in een gemotiveerd team? Lees dan snel verder! Voor onze opdrachtgever in de omgeving van Valkenswaard zijn we op zoek naar een ervaren PHP developer. Jij gaat hier zorg dragen voor het optimaliseren en up-to-date houden van de bestaande applicaties. Je werkt verder aan de applicaties die jij verder ontwikkelt. Dit doe je voornamelijk met PHP en MySQL. Verder ga je je bezig houden met: Het uitbouwen van het E-commerce software platform. Deelnemen aan overleggen met het team. Het ondersteunen van jouw team developers (3 man) en helpen

Bekijk vacature »

Java Developer

Dit ga je doen Ontwerpen en bouwen van nieuwe functionaliteiten binnen de complexe omgeving; Proactief de processen kwalitatief en efficient inrichten; Opzetten van Unit Tests; Code Reviews; Regie nemen voor innovatieve projecten; Landschap beheren en de bijbehorende ketens hierbij in het oog houden. Hier ga je werken De organisatie is actief binnen de financiele branche en heeft een IT afdeling van circa 450 man. De organisatie voorziet de maatschappij binnen de financiele dienstverlening en is gedurende de jaren een onmisbare schakel geworden. Het is een high profile organisatie waar ze veel te maken hebben met veranderingen voortkomend uit maatschappelijke ontwikkelingen,

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in ons development team met twee andere .NET developers. Als team werken jullie in scrum en is er iedere ochtend om 11.00 een standup. Jij krijgt als junior .NET ontwikkelaar een inwerk traject dat echt specifiek wordt ingericht op basis van wat jij nodig hebt. Een van de grootste pluspunten bij ons is dat wij binnen ons bedrijf veel (technische) vrijheid geven en juist eigen initiatieven erg stimuleren. Jouw werkzaamheden gaan er bij ons als volgt uit zien: – Het ontwikkelen van nieuwe software samen met interne en eventueel externe ontwikkelaars; – Het

Bekijk vacature »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

Lasrobot Programmeur

Over de functie Off-line programma’s maken die het beste resultaat bij de lasrobot mogelijk maken De programma’s met behulp van teach verder optimaliseren Proactief meedenken over oplossingen en over de juiste invulling van lasmallen Het lasrobotproces zoveel mogelijk optimaliseren Over het bedrijf Onze opdrachtgever is gespecialiseerd in de engineering, productie en assemblage van samengestelde plaatwerkproducten en monodelen uit metaal. Onze klant werkt samen met het team aan de mooiste producten van de toekomst. Binnen dit bedrijf staat een sterk team van specialisten op het gebied van industrial design, mechanical engineering, in-house prototyping en all-round projectmanagement. Met daarbij uiteenlopende kennis in

Bekijk vacature »

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn ze op zoek naar een Technische front end developer. Momenteel hun front end back end team gescheiden aan het werk. Hier willen ze verandering in krijgen. Omdat ook veel interne applicaties ontwikkeld worden zoeken ze iemand die hen kan helpen om de interne applicaties te voorzien van de juiste Vue.js componenten. Zodoende willen ze de interactie tussen front end en back end versoepelen en de volgende stap binnen het platform gaan zetten. Deze componenten die jij ontwikkeld zullen in elk project gebruikt worden. Het back end team bestaat momenteel uit 8 ontwikkelaars

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »

Web Developer

Bedrijfsomschrijving ENGIE Nederland is onderdeel van de beursgenoteerde ENGIE Groep. ENGIE is actief in 70 landen, met wereldwijd 150.000 medewerkers. Als groep is het de missie om bij te dragen aan de verduurzaming van de wereld. ENGIE Energie biedt energiediensten aan particulieren en grootzakelijk en gaat de uitdagingen van de energietransitie aan door het beschikbaar maken van duurzame energie, het streven de klimaatverandering tot een minimum te beperken, leveringszekerheid te bieden en zorg te dragen voor een verantwoord gebruik van de beschikbare resources. ENGIE Energie investeert daarom in hernieuwbare energiebronnen zoals zon, wind en bio-gas. Functieomschrijving Heb jij veel ervaring

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

Senior Fullstack developer wanted! (C#, Java, Angu

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »

Medior/senior Front-end developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Software Developer PHP JavaScript Python HBO SQL

Samengevat: Wij zijn een softwarebedrijf voor Autodealers. Ben jij een Medior of Senior Software Developer? Heb je ervaring met PHP, JavaScript of Python? Vaste baan: Java.Developer Software HBO €3.000 - €5.200 Bij ons op de werkvloer is er een positieve en informele sfeer. Naast een goede begeleiding en een enthousiaste klantenkring biedt deze werkgever een prettige omgeving met zeer afwisselende werkzaamheden. Houd jij van aanpakken en denk je dat je deze uitdaging aankunt? Dan zoeken wij jou! Zij werken voor grote klanten. Zij doen omvangrijke projecten die we bij deze werkgever op kantoor realiseren (geen detachering). Zij werken met state-of-the-art

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

25/05/2013 18:48:49
Quote Anchor link
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?
 
PHP hulp

PHP hulp

17/11/2024 19:43:04
 
Erwin H

Erwin H

25/05/2013 18:51:40
Quote Anchor link
INT
 
Ozzie PHP

Ozzie PHP

25/05/2013 18:54:35
Quote Anchor link
Thanks Erwin. Kun je ook uitleggen waarom? Zover ik begreep worden integers niet gequote, en dus vraag ik me af of ik op deze manier niet de poorten openzet voor sql injectie.
 
Erwin H

Erwin H

25/05/2013 19:08:41
Quote Anchor link
Die param types zijn er niet voor bedoeld om aan te geven wat je mee geeft (of je integer dus een integer of een string is), maar om aan te geven hoe PDO die waarde moet verwerken in de query. Uiteindelijk is de hele query namelijk een lange string, dus of je integer nu binnen komt als string is niet erg.
En nee, je kan je query er niet mee open zetten voor een sql injectie. Als je een string meegeeft zal die worden gecast naar een integer (en wordt dan 0).
 
Ozzie PHP

Ozzie PHP

25/05/2013 20:20:00
Quote Anchor link
Ah op die manier. Nu maak ik een method waaraan ik een array met values kan meegeven. Die values moeten automatisch worden gebonden met het juiste type. Als het bijv. een string is, dan zeg ik:

if (is_string($value)) $data_type = PDO::PARAM_STR;

Nu had ik dus zo'n zelfde controle gedaan met is_int() en dan als $data_type PDO::PARAM_INT. Echter zou ik dan in plaats van is_int() beter is_numeric() kunnen doen? Zodat als er via een formulier een getal wordt meegegeven dit ook als een int wordt gezien? (terwijl het feitelijk een string is)
 
Erwin H

Erwin H

25/05/2013 20:26:26
Quote Anchor link
Ja...., maar

Doe je die check nu in je database class om te kijken welk type param je moet gebruiken? Dat lijkt me niet handig. Want dan zou je kunnen krijgen dat je een int wil, de gebruiker iets raars invult en je dan alsnog een string param doorgeeft. Nou kan het op zich geen kwaad (geen sql injectie), maar het kan wel voor langzamere queries zorgen omdat je database engine dan nog de juiste typecasts moet gaan uitvoeren.
 
Ozzie PHP

Ozzie PHP

25/05/2013 20:36:22
Quote Anchor link
Ja, in het geval van prepared statements wil ik een array kunnen doorgeven aan de database class. Ik wil dan alleen de formulier waardes doorgeven en niet per veld gaan bepalen wat voor type het moet zijn. Dat wilde ik de database class zelf laten doen eigenlijk.

Stel de query is:

SELECT type, sort WHERE type = :type AND sort = :sort

Stel dat type een naam is en sort een getal... dan wil ik eigenlijk gewoon dit kunnen doen:

setValues('type' => $type, 'sort' => $sort);

En de database class zou dan moeten zien... aha $type is een string, dus PDO::PARAM_STR.
Aha... $sort is numeriek, dus PDO::PARAM_INT.

Dat was eigenlijk mijn gedachte.

Toevoeging op 25/05/2013 20:43:25:

Overigens...

Ik controleer natuurlijk wel eerst in de code of type een string is en of sort numeriek is. Pas daarna stuur ik het dan door naar de database class. Dus als ik ergens een int verwacht dan kan dat niet ineens iets anders worden.
 
Erwin H

Erwin H

25/05/2013 21:02:09
Quote Anchor link
Lijkt me op zich gevaarlijk. Er zijn namelijk types die niet makkelijk te ondescheiden zijn. Makkelijker lijkt me dan om een multidimensionele array mee te geven, waarin je ook de types zet. Het lijkt me namelijk niet echt de taak van de database class om te gaan bepalen welk type een variabele is.
 
Ozzie PHP

Ozzie PHP

25/05/2013 21:04:23
Quote Anchor link
"Lijkt me op zich gevaarlijk. Er zijn namelijk types die niet makkelijk te ondescheiden zijn."

Heb je een voorbeeld?
 
Erwin H

Erwin H

26/05/2013 00:37:08
Quote Anchor link
Een integer versus een float bijvoorbeeld (een float geef je op als string). Of een int in een string veld. Integer versus boolean.

Maar eigenlijk vind ik het belangrijker dat je nu een dubbele check gaat uitvoeren die nergens voor nodig is en je gaat willes en wetens mogelijke fouten introduceren die niet nodig zijn.
De dubbele check komt omdat je nu in de aanroepende class extra moet checken op data type en in de database class nog eens. Geef je gewoon het parameter type mee dan doet PDO het grotendeels voor je. De fouten komen doordat je nu in sommige gevallen gewoon verkeerde types gaat meegeven terwijl je weet wat het moet zijn.
 
Ozzie PHP

Ozzie PHP

26/05/2013 00:46:06
Quote Anchor link
Erwin, ik kan je volgen. Maar als het niet hoeft, dan ga ik liever niet telkens die types meegeven. Ik ben dus benieuwd of ik het kan voorkomen.

Eerst even een vraag tussendoor. Speelt dit alleen bij prepared statements? Of moet je bij een "normale" query ook een datatype meegeven. Volgens mij niet?? Echter, bij de quote() functie kun je ook een datatype meegeven die default op PDO::PARAM_STR staat. Maar dit snap ik niet. Je hoeft toch alleen maar strings te quoten? Waarom zou je dan een ander datatype willen meegeven?

Terugkomend op de types... ik kan in de database class toch gewoon controleren wat voor type het is? Als het een int is gebruik ik PDO::PARAM_INT, voor een strig PDO::PARAM_STR, voor een boolean PDO::PARAM_BOOl en voor null PDO::PARAM_NULL.

Vanuit een formulier controleer ik de geposte values. Dat zijn allemaal strings. En als er dan een bepaalde waarde is die een integer zou moeten zijn, dan cast ik die naar een integer en in de database class krijgt ie automatisch de juiste constante. Waar zit dan precies het gevaar?
 
Erwin H

Erwin H

26/05/2013 01:11:12
Quote Anchor link
Ozzie PHP op 26/05/2013 00:46:06:
Maar als het niet hoeft, dan ga ik liever niet telkens die types meegeven.

Soms kan ik je echt niet volgen....

Altijd overdreven gefixeerd op performance, tot in micro optimalisatie, maar wanneer je twee overbodige checks kan voorkomen per variabele dan doe je dat niet omdat je geen parameter mee wil geven! Het spijt me, ik kan het niet helderder zeggen dan dat.


Ozzie PHP op 26/05/2013 00:46:06:
Eerst even een vraag tussendoor. Speelt dit alleen bij prepared statements? Of moet je bij een "normale" query ook een datatype meegeven. Volgens mij niet?? Echter, bij de quote() functie kun je ook een datatype meegeven die default op PDO::PARAM_STR staat. Maar dit snap ik niet. Je hoeft toch alleen maar strings te quoten? Waarom zou je dan een ander datatype willen meegeven?

Ik heb er geen 100% zeker antwoord op, maar volgens mij is nuttig als je een integer meegeeft zodat quote weet dat er geen quotes omheen hoeven. Slimmer is om dan gewoon quote niet aan te roepen en te typecasten overigens.
 
Ozzie PHP

Ozzie PHP

26/05/2013 01:19:42
Quote Anchor link
Haha, Erwin. Ik kan het zelf op het moment ook even niet volgens dus maak je niet druk. Stel we heben een query, SELECT foo FROM ... dan doe ik liever zoiets:

setValues(['foo' => $foo]);

... dan dat ik iedere keer dit moet doen:

setValues(['foo' => ['value' => $foo, 'type' => PDO::PARAM_STR]]);

Die 1e optie lijkt me prettiger. Bij de 2e optie moet ik met keys gaan werken (value en type) en bovendien moet ik dan weer een contructie maken waardoor ik niet PDO::PARAM_STR kan gebruiken maar een OZZIE::PARAM_STR zodat het in toekomstige interfaces ook goed werkt.

Ik wil niet zeggen dat ik jouw manier niet wil / ga toepassen, maar ik zie het voordeel nog niet. Daarnaast snap ik niet wanneer ik 2 overbodige checks heb. Ik zie er maar 1, namelijk die in de database class. In het formulier zul je toch sowieso je data moeten valideren?
Gewijzigd op 26/05/2013 01:25:07 door Ozzie PHP
 
Erwin H

Erwin H

26/05/2013 08:49:25
Quote Anchor link
Als ik het zou zoals jij het nu denkt te gaan doen dan krijg ik drie checks:
1) controller leest alle user input uit en checkt op compleetheid en sql injectie (en andere hack) pogingen om te loggen
2) query class checkt en typecast parameters
3) database class checkt op type van parameter en gokt welk parameter type nodig is

Checks 2 en 3 zijn overbodig als je een PARAM::XXXX meegeeft omdat het typecasten/escapen dan automatisch door de database server gebeurt.

De rest ga ik niet nog een keer herhalen.
 
Ozzie PHP

Ozzie PHP

26/05/2013 15:22:13
Quote Anchor link
Erwin, laat ik ten eerste beginnen te zeggen dat ik je reacties zeer waardeer en er ook zeer veel waarde aan hecht. Het gaat mij er niet om wie van ons beiden gelijk heeft. Het gaat mij er om OF een van ons beiden meer gelijk heeft dan de ander en zo ja WAAROM.

Wat betreft jouw punten.
1) Ik zou de controller niet laten checken op sql injectie. De database class doet dit door gebruik te maken van prepared statements of de functie quote().
2) Zoals ik eerder vertelde heb ik geen aparte query class. Dit punt is dus niet van toepassing.
3) De database class checkt inderdaad het type. Wat kan daarmee mis gaan als ik zorg dat het juiste type binnenkomt.

Toelichting op punt 3: via user input komt alles binnen als een string. Dit betekent dat als ik deze values doorstuur naar de database class ze altijd als een string zullen worden geinterpreteerd. Correct? Als ik ergens in een formulier een integer verwacht, dan valideer ik of het inderdaad een integer is. Zo ja, dan typecast ik de value naar een integer. Op deze manier krijgt de database dus altijd het juiste datatype binnen.

Waar zit hier dan concreet de mogelijkheid waar het fout kan gaan?
 
Erwin H

Erwin H

26/05/2013 15:43:10
Quote Anchor link
Punt 1) dat kan, dat doen veel mensen, maar je kan je ook afvragen of misschien goed is om te weten of er aanvallen plaatsvinden. Dat kan je alleen weten als je het logt. En loggen kan weer alleen als je het zelf checkt. Dus die check zou je wel moeten uitvoeren als je in elk geval wilt weten wat er met je systeem gebeurt. Daarnaast kan je doordat je die check uitvoert ook meteen het hele request killen voor er iets is gebeurt. De aanvaller krijgt dan elke keer alleen een lege pagina te zien en kan dus helemaal niets.
Maar dit gaat in principe buiten het punt om, ik gaf het alleen mee om aan te geven welk serie aan checks er zouden komen mocht ik jou gang van zaken overnemen.

Punt 2) dan noem je het anders, maar feit is dat je een check MOET uitvoeren voor je de data aan de database class geeft. De database class moet namelijk aan de hand van het type variabele dat het binnen krijgt bepalen wat voor param type gebruikt moet worden. Doe je deze check niet, dan wordt het een gok en dat kan nooit de bedoeling zijn. Geef je het type mee dan is deze check onnodig.

Punt 3) ALS je het juiste type binnen laat komen. Je zegt net dat je voor de database class niets checkt, hoe weet je dan dat je het juiste binnen krijgt? Daarnaast is het niet alleen de vraag of je problemen krijgt, maar dat je een extra serie evaluaties moet doen om te bepalen welk type het is. Iets wat onnodig is als je gewoon het type meegeeft.

Bij je toelichting zeg je dus wel weer dat je punt 2 uitvoert.

Maar goed, het blijft voor mij onbegrijpelijk hoe je altijd totaal gefixeerd bent op performance en dan de volgende keer dit weggooit omdat je iets anders 'mooier' vind. Probeer eens consequent te zijn.

Voor mij is het nu wel over. Ik heb het punt gemaakt, doe er je voordeel mee, of niet.
 
Ozzie PHP

Ozzie PHP

26/05/2013 15:58:49
Quote Anchor link
Dankjewel voor je toelichting Erwin. De hele discussie gaat niet over performance. Zo'n check waar ik het nu over hebt kost vrijwel niks. Voor de duidelijkheid, ik ga niet altijd voor de snelste optie, maar ik denk er op z'n minst over na en kies dan, afhankelijk van de omstandigheden, de beste optie.

Wellicht was mijn uitleg niet helemaal duidelijk, of heb jij deze anders geinterpreteerd. Het controleren (op inhoud) doe ik wel degelijk. Ik krijg een POST waarde en ik kijk of die aan de verwachtingen voldoet. Alle POST waardes zijn per definitie strings. Op het moment dat deze de database class binnenkomen worden ze dus ook als dusdanig geinterpreteerd. Op het moment dat via een formulier een integer verwacht wordt, doe ik een controle of het inderdaad een getal is (zo niet, formulier opnieuw laden met foutmelding). Indien het een getal is typecast ik het naar een integer (anders zou het namelijk nog steeds een string zijn). De database ontvangt dus een echte integer en zal deze dan ook als dusdanig interpreteren.

In mijn optiek vindt er dus 1x een extra controle plaats. Namelijk in de database class die op basis van het aangeleverde datatype, de juiste PDO::PARAM_XXX kiest. Dit is de enige extra controle.

Nu zou ik inderdaad het datatype PDO::PARAM_XXX rechtstreeks kunnen meegeven, maar dan kunnen het niet de PDO constantes zijn, want dan zou het voor een andere database interface niet meer werken. Dus ik zal een abstracte class moeten maken met OZZIE::PARAM_XXX. Dat betekent dus dat ik telkens een extra waarde op moet halen en die moet koppelen aan een class constant (idem als de fetch methode uit een eerder topic). Qua performance zal dit weinig verschil maken met de check die ik uitvoer.

Ik vind het jammer dat je in je laatste topic zegt "Voor mij is het nu wel over." want ik vind het juist interessant om van jou te horen, afgezien van het argument over performance, waar het in mijn methode mis zou kunnen gaan. Want dat is nu juist waarnaar ik benieuwd ben.
 
Ward van der Put
Moderator

Ward van der Put

26/05/2013 16:53:46
Quote Anchor link
Een geboortejaar is een integer maar niet elke integer is een geboortejaar.

Een e-mailadres is een string maar niet elke string is een e-mailadres.

Vraag is dus wat je eigenlijk met "een database class" wilt bereiken. Een algemene "connector" voor een groot aantal databaseservers is iets anders dan een specifieke "mapper" voor een vast omlijnd datamodel.

Met andere woorden: als "geboortejaar" in jouw oplossing een specifiek datatype is, dan moet je dat in een interface formaliseren. En komt een MySQLi, een PDO, of een wat-dan-ook niet verder dan een integer, dan is er dus werk aan de winkel.
 
Ozzie PHP

Ozzie PHP

26/05/2013 18:10:25
Quote Anchor link
Ward, het gaat erom... als ik ervoor zorg dat in de database class altijd het juiste type wordt aangeleverd, dan kan PDO op de juiste manier de value "binden". Als ik zorg dat er een string binnenkomt, dan zal PDO het als string behandelen. Als ik zorg dat er een int binnenkomt, zal PDO het als een int behandelen. De vraag is of hier een bepaald risico aan vastzit. Ik zie het niet, maar Erwin wel.
 
Ward van der Put
Moderator

Ward van der Put

26/05/2013 18:59:48
Quote Anchor link
Ozzie, je vraag bevat een aanname en een waardeoordeel. Als je met "het juiste datatype" een datatype van PDO bedoelt, dan bestaat het gevaar dat je slechts een kopie van PDO implementeert. Een simpele extends is daarvoor voldoende.

Daarom noemde ik, ook omdat je het in de startpost noemt, een fundamentele twijfel: een geboortedatum is een integer, maar wel eentje met speciale karakteristieken. Dáárover zal een class die meer doet dan PDO zelf zich dus moeten buigen. Doet de class niets dan PDO nabootsen, dan heeft de class geen bestaansrecht.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/05/2013 19:23:31
Quote Anchor link
Ward, voor sql is een (geboorte)datum geen integer maar een string, die moet alleen wel in het juiste formaat staan.
Ik zie dat in zowel PDO als MySqli geen mogelijkheden zijn om een parameter van het datatype date(/time) te binden.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.