stmt vs prep stmt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Software Developer .NET

Functie omschrijving .NET developer gezocht! Wij zoek op zoek naar een .NET Developer die zich niet uit het veld laat slaan voor een software bedrijf in de regio Veenendaal. Je gaat in deze functie aan de slag met het door ontwikkelen van bestaande producten en het ontwikkelen van nieuwe producten. Dit bedrijf ontwikkeld SaaS applicaties die zowel intern als extern gebruikt worden. Verder bestaat je functie uit: Het ontwikkelen en bouwen van webapplicatie, mobiele applicaties en websites vallen onder jouw verantwoordelijkheden; Werken met onder andere .NET, C#, HTML/CSS, Javascript en MSSQL/Oracle Databases; Hierin werk je samen met andere developers en

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

Programmeur / Developer

Voor een familiebedrijf in Doetinchem, actief in de machinebouw voor de food-sector, zijn wij op zoek naar een programmeur / developer. In deze functie ben je werkzaam in een team van 5 medewerkers. Je werkzaamheden bestaan onder andere uit het verhelderen van requirements vanuit de opdrachtgever, de klant en de afdeling ontwikkeling. Je verricht haalbaarheidsstudies en werkt specificaties uit die je afstemt met de opdrachtgever. Je ontwerpt design in software en stemt af met je collega's. De huidige vision-systemen zijn geschreven in C software, welke draait op een CUDA platform. Je schrijft en codeert software en zal gaan testdraaien. Tot

Bekijk vacature »

Fullstack developer (NodeJS, React, AWS)

Functie Als Fullstack developer kom je te werken in het ontwikkelteam, maar zoals gezegd komt er veel meer bij kijken dan alleen maar ontwikkelen. Je bent samen met je collega’s continu bezig om de software uit te breiden maar hiernaast doe je doorlopend onderzoek naar de inzet van bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Maar waar staan ze nu? Na een onderzoeksfase van ruim een jaar zijn

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net 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. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

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 »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Barendrecht! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

APEX Ontwikkelaar in een team van Oracle Developer

Bedrijfsomschrijving Wij zijn op zoek naar een APEX Ontwikkelaar om onze opdrachtgever in Den Haag te versterken. In deze rol zul je verantwoordelijk zijn voor het ontwikkelen en onderhouden van de front-end van onze applicaties met behulp van Oracle Application Express (APEX). Je werkt aan zowel inhouse als externe projecten. De sfeer binnen het Oracle team is gemoedelijk en men probeert elkaar te helpen én van elkaar te leren. Zo ontstaat er een prettige en plezierige werksfeer waar ruimte is voor persoonlijke ontwikkeling en groei. Er wordt gewerkt met de meest nieuwe technologieën waardoor je kennis up-to-date blijft. Het bedrijf

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »
Ozzie PHP

Ozzie PHP

27/05/2013 14:33:30
Quote Anchor link
Een tijdje geleden heb ik ook al eens gevraagd hoe het nu zit met prepared statements. Bijna overal lees je dat je altijd prepared statements moet gebruiken omdat dat veiliger zou zijn. Echter, hier op het forum werd gezegd dat je voor queries die je eenmalig uitvoert beter "normale" statements kunt gebruiken omdat dat beter is voor de performance. (Prepared statements hebben overhead en zijn wat trager, en alleen zinvol als je hetzelfde statement meerdere keren uitvoert met verschillende waardes.)

Ik heb mijn class nu zo gemaakt, dat ik heel makkelijk kan switchen tussen het gebruik van normale en prepared statements. Voor statements die maar 1 keer te hoeven worden uitgevoerd, gebruik ik dan gewoon een normaal statement. Er valt mij echter wel iets op.

Als ik gebruik maak van prepared statements en ik daarbij de bindValue() method gebruik, dan kun je per value meegeven om wat voor soort data type het gaat, bijv. een integer, string, boolean of null.

Als ik echter gebruik maak van een normale statement dan kun je geen data types aangeven. Het enige wat je kunt doen is de quote() method gebruiken om strings te quoten.

Nu vroeg ik me af waarom dit zo is, en mijn conclusie is:

Bij een normaal statement wordt verwacht dat je zelf de quotes goed zet, in de query zelf. Op het moment dat je een variabele in de query plaatst en dit een string is, dan dien je deze string te quoten. Bij een prepared statement gebruik je placeholders en geef je aan van wat voor data type een bepaalde value is en vervolgens weet PDO dan of er wel of niet gequote moet worden. Begrijp ik het zo goed???

Als laatste ben ik ook wel benieuwd hoe vaak en wanneer jullie gebruik maken van een prepared statement. In feite zou je een prepared statement dus alleen moeten gebruiken op het moment dat je hetzelfde statement meerdere keren wilt uitvoeren, maar met verschillende waarden. Maar in welke situaties komt dit eigenlijk voor? Stel dat je met een query de gegevens wil ophalen van personen met de voornaam Jan, Piet en Kees. Dit zou je makkelijk in 1 query kunnen doen, maar is het nu de bedoeling dat je dat dan voortaan met een prepared statement doet, waarbij je telkens de naam wijzigt?
 
PHP hulp

PHP hulp

17/11/2024 19:56:32
 
Willem vp

Willem vp

27/05/2013 15:57:55
Quote Anchor link
Ozzie PHP op 27/05/2013 14:33:30:
Een tijdje geleden heb ik ook al eens gevraagd hoe het nu zit met prepared statements. Bijna overal lees je dat je altijd prepared statements moet gebruiken omdat dat veiliger zou zijn. Echter, hier op het forum werd gezegd dat je voor queries die je eenmalig uitvoert beter "normale" statements kunt gebruiken omdat dat beter is voor de performance.

Het gebruik van het woord 'echter' suggereert dat de tweede bewering in tegenspraak zou zijn met de eerste. Dit is echter niet het geval.

Ja, prepared statements zijn veiliger (denk aan SQL injection).
Ja, soms is het voor de performance beter om geen prepared statements te gebruiken.

Wat je je moet afvragen is, wat je belangrijker vindt. Zelf vind ik een gehackte website altijd zeer nadelig voor de performance. In dat licht kan het ook voor de performance wel eens beter zijn om alleen prepared statements te gebruiken. ;-)

En aan de andere kant: waar praten we nu helemaal over? Ik heb hier een script dat een stuk of 10 prepared statements aanmaakt en daarop wat queries uitvoert. Als ik het opstart, heb ik niet eens tijd om met mijn ogen te knipperen voor het is afgelopen. Zo erg nadelig voor de performance is het dus ook weer niet. Je moet uiteraard niet in een loopje gaat lopen preparen, maar dat is ook niet de gedachte achter prepared statements.

Quote:
Als ik gebruik maak van prepared statements en ik daarbij de bindValue() method gebruik, dan kun je per value meegeven om wat voor soort data type het gaat, bijv. een integer, string, boolean of null.

null values en prepared statements zijn een verhaal op zich. ;-) Als de database engine zich aan de SQL-standaard houdt, kun je namelijk niet zomaar een null als parameter meegeven aan een select statement, bijvoorbeeld.

Quote:
Bij een normaal statement wordt verwacht dat je zelf de quotes goed zet, in de query zelf. Op het moment dat je een variabele in de query plaatst en dit een string is, dan dien je deze string te quoten. Bij een prepared statement gebruik je placeholders en geef je aan van wat voor data type een bepaalde value is en vervolgens weet PDO dan of er wel of niet gequote moet worden. Begrijp ik het zo goed???

Ongetwijfeld valt er nog iets te nuanceren, maar ik vind dat je het zo wel mooi hebt samengevat.

Quote:
Als laatste ben ik ook wel benieuwd hoe vaak en wanneer jullie gebruik maken van een prepared statement. In feite zou je een prepared statement dus alleen moeten gebruiken op het moment dat je hetzelfde statement meerdere keren wilt uitvoeren, maar met verschillende waarden. Maar in welke situaties komt dit eigenlijk voor?

Het hangt een beetje van het toepassingsgebied af. Bij webpagina's wordt de pagina opgebouwd en vervolgens ben je klaar. Bij een nieuwe request moet alles weer overnieuw gedaan worden. Wanneer je echter software maakt die langer draait dan die halve seconde die nodig is om een webpagina op te bouwen, zul je meer plezier hebben van prepared statements. Bij websites zul je ze voornamelijk gebruiken omdat je je dan minder druk hoeft te maken over SQL injection.
Gewijzigd op 27/05/2013 15:59:10 door Willem vp
 
Ozzie PHP

Ozzie PHP

27/05/2013 16:08:26
Quote Anchor link
Dankjewel Willem!

Bij mij gaat het inderdaad om websites en niet om software die langdurig draait.

Ik heb een functie gemaakt waarmee ik gewoon een prepared statement kan maken, bijv.

SELECT foo WHERE bar = :bar

Values toevoegen:
setValues('bar' => $bar);

Wat ik nu doe is het volgende. Indien de query meerdere keren moet worden uitgevoerd, dan roep ik eerst een functie aan waarmee ik aangeef dat ik een prepared statement wil gebruiken. Vervolgens wordt er dan achter de schermen ook daadwerkelijk een prepared statement gebruikt. Als ik deze functie niet aanroep dan wordt een "normale" statement gebruikt.

In het bovenstaande voorbeeld houdt dit het volgende in:
- ik bepaal of $bar een string is. Zo ja, dan quote ik deze value quote($bar)
- ik vervang :bar in de query door de value $bar

Volgens mij ben ik dan ook veilig voor SQL-injectie, maar gebruik ik geen prepared statement.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

27/05/2013 20:29:22
Quote Anchor link
Ozzie PHP op 27/05/2013 14:33:30:
Als laatste ben ik ook wel benieuwd hoe vaak en wanneer jullie gebruik maken van een prepared statement. In feite zou je een prepared statement dus alleen moeten gebruiken op het moment dat je hetzelfde statement meerdere keren wilt uitvoeren, maar met verschillende waarden. Maar in welke situaties komt dit eigenlijk voor? Stel dat je met een query de gegevens wil ophalen van personen met de voornaam Jan, Piet en Kees. Dit zou je makkelijk in 1 query kunnen doen, maar is het nu de bedoeling dat je dat dan voortaan met een prepared statement doet, waarbij je telkens de naam wijzigt?

Als je het in één query kan doen, moet je het niet in meerdere query's doen, ook niet met preps.
Met een prepared statement spreekt de client (PDO/MySQLi) de api van de database server aan, en 'vertelt' dat er een query aankomt met een aantal variabelen (parameters). De server maakt dan een execution plan voor de query en geeft de client een pointer terug. Daarna hoeven enkel maar de parameters voor die pointer aan de db server doorgeven te worden.

Maar het is niet de prepared statement dat sql injectie voorkomt maar de parameters,
en het is mij volledig onduidelijk waarom de laatse niet zonder de eerste kan in PDO en MySQLi.

Op de vraag hoe vaak en wanneer ik prepared statements gebruik:
Zelden, alleen bij updates en in MySQL bij sommige selects.
 
Ozzie PHP

Ozzie PHP

27/05/2013 20:52:59
Quote Anchor link
Thanks voor je duidelijke toelichting Ger.

Ik vind het vrij lastig allemaal. Ook het bindValue() verhaal. Als ik wil dat een variabele als een integer wordt beschouwd via PDO::PARAM_INT, dus zo:

bindValue('foo', $foo, PDO::PARAM_INT);

Is het dan de bedoeling dat $foo ook daadwerkelijk een integer is, bijv. 12. Of mag het ook een numerieke string zijn, bijv. "12"?
 



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.