PDO::PARAM_INT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Software Developer C#.NET

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van de warehouses. Op dit moment wordt er nog gebruik

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Medior PHP Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte website die in eigen beheer zijn. In onze vestiging in Nederweert zitten onze development afdelingen en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé PHP/Back-end developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het bedenken van nieuwe functionaliteiten Het verbeteren van het

Bekijk vacature »

Full Stack C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Senior front-end developer (React)

Functie Momenteel zijn ze op zoek naar een ervaren front-end developer. Als senior werk je nauw samen met 5 collega developers. Een klein scrum team dus, met korte lijnen waardoor jouw ideeën snel tot uitvoering gebracht kunnen worden. De huidige applicaties worden veelal ontwikkeld met o.a. React, Redux, TypeScript. Ze zijn echt op zoek naar een kartrekker in het team. Naast het meedenken over, opzetten en uitvoeren van bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Hierin nemen ze graag de tijd om mensen de ruimte te

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Software Developer PHP

Functie omschrijving We are looking for a dutch native speaker Voor een opdrachtgever in de regio van Geldrop ben ik op zoek naar een Software Developer PHP. Jij krijgt een rol met veel verantwoordelijkheid in een groeiende organisatie. In deze functie werkt je voornamelijk remote en op een vast moment kom je met het team samen, om samen te werken en nieuwe doelen te bepalen. Wat ga je doen? Je wordt verantwoordelijk voor de interne applicatie; Je zorgt voor de doorontwikkeling van de applicatie: zowel back-end, front-end; De basis van het werk betreft front-end technieken; Periodiek bepaal je samen met

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »

Medior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Medior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

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 21:51:29
 
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.