PDO vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

Ervaren PHP developer gezocht!

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

Sportieve Junior C#.NET developer gezocht!

Bedrijfsomschrijving Wil jij werken aan webapplicaties bij de marktleider binnen de branche? Voor een klant in de buurt van Oosterhout ben ik op zoek naar een Fullstack .NET developer. Dit bedrijf bestaat bijna 10 jaar en is inmiddels uitgegroeid tot marktleider in Nederland en heeft tevens kantoren in meerdere landen in Europa. Dit bedrijf bouwt webapplicaties waarbij internationaal enkele honderdduizenden deelnemers, soms tegelijk, een beroep doen op de realtime data uit deze applicaties. Dit brengt erg veel technische uitdaging met zich mee. Ze ontwikkelen nieuwe applicaties maar ook bestaande applicaties worden uitgebreid en verbeterd. Hier kan jij een onderdeel van

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.NET Developer

Functie De perfecte combinatie tussen techniek en vastgoed. Werk samen met de senior software developer om allerlei software van fluX te verbeteren. Gelukkig voel jij je helemaal thuis in de codewereld van .NET. Dus of je nu bezig bent met het verhogen van de conformiteitscore of het automatiseren van allerlei taxatiemodellen, jij weet precies hoe je de doelstellingen realiseert. En dat terwijl je ook samenwerkt met een extern ontwikkelteam. Waar dit team bepaalde softwaresystemen ontwikkelen, richt jij je vooral op onze Nederlands georiënteerde producten en alle wetgeving die daarbij komt kijken. Voor minimaal 32 uur per week verrijk jij onze

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 »

.NET developer

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

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 »

BizTalk/ Azure Developer

Dit ga je doen •Understanding the scope of required functionality, translate them within context of way of working of the team into developed solutions, whilst safeguarding documentation; •Planning based on assigned sprint tasks; •Acting as an expert in estimation techniques and planning; •Understanding your role in the agile process and act in this way; •Facilitating internal communication and effective collaboration; •Working closely with scrum master to handle backlogs and new requests; •Providing information to the third parties about activities and needs for compliance. Hier ga je werken Our client is a leading organization focusing on animal nutrition, offering solutions that

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

Senior Front end developer Automotive Angular

Functie Als Senior Front end developer kom je te werken in een team van 11 developers. 9 van de 11 focussen zich op back end, welke is geschreven in Java, en 2 op de front end waarbij er gebruik wordt gemaakt van Typescript en Angular. De focus in deze rol ligt op 2 aspecten; doorontwikkeling van de eigen tooling en gebruik van de tooling t.b.v. klantprojecten. Momenteel zijn ze in de afrondende fase van een project waarbij ze het gehele verkoopproces van nieuwe auto’s anders ingeregeld hebben voor een grote dealer in Nederland. Waarbij Auto’s normaliter pas verkocht werden in

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »
Ama saril

ama saril

15/11/2012 12:30:17
Quote Anchor link
Ik ben aan het spelen geweest met de PDO tutorial (naar aanleiding van een ander topic) en op zich zie ik de voordelen van PDO wel in maar ik heb toch wel een vraag :)

Als je dus een prepared statement uitvoert kan je niet het aantal resultaten van een resultaatset lezen. Ik zie in de tutorial dat je dan eerst een count() query moet uitvoeren maar het is toch niet efficient als je 2 queries uitvoert?

Ik zit dan te denken om voor select queries geen Prepared statement te gebruiken zoals hieronder:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

//verinding maken etc..
$sql = "SELECT naam FROM tbl_persoon";
$results = $db->query($sql);

?>


zodat ik de rijen kan tellen, en voor insert, update en delete wel. Bij de select query zou ik dan wel quote()(of mysql_real_escape_string) moeten gebruiken om sql injectie tegen te gaan. Is dit een goede gedachte of heb ik iets verkeerd begrepen uit de tutorial?
 
PHP hulp

PHP hulp

19/05/2024 01:38:56
 
Martiveen -

Martiveen -

15/11/2012 12:41:44
Quote Anchor link
Zolang je geen user content invoegd.
Anders moet je gebruik maken van prepared statements. En die zorgen dat voor de mysq_real.. etc.
 
Ama saril

ama saril

15/11/2012 12:58:23
Quote Anchor link
Martiveen - op 15/11/2012 12:41:44:
Zolang je geen user content invoegd.
Anders moet je gebruik maken van prepared statements. En die zorgen dat voor de mysq_real.. etc.


Dus als ik het goed begrijp zijn prepared statements voornamelijk goed voor insert, update en delete? Maar voor select niet echt handig.
 
Martiveen -

Martiveen -

15/11/2012 13:07:32
Quote Anchor link
Hangt er vanaf of je user input gebruikt. Dan is het handig
 
Ama saril

ama saril

15/11/2012 13:15:44
Quote Anchor link
Martiveen - op 15/11/2012 13:07:32:
Hangt er vanaf of je user input gebruikt. Dan is het handig


Dus als ik een query maak
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
"SELECT naam, adres, woonplaats FROM tbl_gegevens where id = ".$invoer;
?>


Dan voer ik deze query toch maar 1 keer uit en dan heeft het toch niet echt nut om er een prepared statement van maak? Het enige voordeel wat ik dan zie van prepared statement is het feit dat je geen mysql_real_escape_string() hoeft te gebruiken volgens mij wordt het dan wel trager. Of is dit niet zo?
 
Martiveen -

Martiveen -

15/11/2012 14:17:00
Quote Anchor link
Nu gebruik je geen prepared statement.
Voorbeeldje van PHP.net
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>


EDIT: linkje naar de code http://php.net/manual/en/pdostatement.bindparam.php
Gewijzigd op 15/11/2012 14:20:07 door Martiveen -
 
Ama saril

ama saril

15/11/2012 15:00:26
Quote Anchor link
Martiveen - op 15/11/2012 14:17:00:
Nu gebruik je geen prepared statement.
Voorbeeldje van PHP.net
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>


EDIT: linkje naar de code http://php.net/manual/en/pdostatement.bindparam.php


dat was ook mijn plan. Voor selects geen prepared statements en voor alle andere commando's wel :)
 
LEDfan nvt

LEDfan nvt

15/11/2012 15:18:51
Quote Anchor link
Werken met PDO is helemaal anders dan werken met mysql_* functies. Van de snelheid zal je niks merken, een gemiddelde query duurt nog geen milliseconde.

Je moet even alles wat je weet over mysql_* functies vergeten. Als je PDO gebruikt heb je deze niet meer nodig. Ook mysql_real_escape_string heb je niet meer nodig.

Ik zal even proberen uit te leggen in enkele stappen hoe je met PDO werk, om gegevens op te halen uit een database. Dit door gebruik te maken van prepared statements.

1) Verbinden met de database. Hiervoor gebruik je de variable $con.
2) De query schrijven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $sql = "SELECT id FROM users WHERE naam = :naam"; ?>

Op de plaats waar je normaal user input* zo invoegen plaats je nu eerst een ':' en dan de een zelfgekozen duidelijke naam van die userinput. Omdat we hier een naam gaan invullen, neem ik ':naam';
3) De query 'preparen'. Nu wil ik even duidelijk maken waarom je de query moet preparen. We hebben hier een query met user input*. Stel we hebben een form met een input:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="naam" placholder="naam">

In dit input veld moet je je naam invullen. Deze naam wordt dan via $_POST doorgestuurd naar een .php bestand. Als je dan de query gaat opstellen krijg je dit: (een niet prepared query):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id FROM users WHERE naam = $_POST['naam']

Deze query gaat het id uit de tabel users halen. Maar wat als ik nu mijn naam niet invul maar iets anders bv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mijnnaam; DELETE FROM users;
Ik heb nu i.p.v. een naam een query ingevuld. PHP gaat deze query ook uitvoeren. Alle users zijn nu verwijderd. Deze techniek die veel door hackers wordt gebruikt noemt men SQL injectie. (injection) Wat kan je nu doen omdat te voorkomen is alle tekens die door SQL in de query wordt gebruikt te gaan escapen, eigenlijk gewoon een \ voor gaan plaatsen. Daarvoor heb je bij mysql_* functies mysql_real_escape. Die gaat er dus voorzorgen dat er geen sql injectie mogelijk is.

De mensen die PDO hebben ontwikelt waren zo slim om dit anders aan te pakken. I.p.v. te escapen gaat PDO eerst de query versturen (preparen) en dan pas de user input, of de variable.

Zo prepare je een query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $q = $con->prepare($sql);?>

We maken nu een nieuwe variable $q aan, en we gebruiken de varibale $con voor onze eerder gemaakte connectie, en $sql is onze query.

4) Nu hebben we natuurlijk geen user input of variable input gestuurd, dat gaan we nu doen. Dit kan op 2 manieren:
a. $q-execute(array(':naam', $_POST['naam']));
b. $q->bindParam(':naam', $_POST['naam']);

Beide manieren zijn juist, maar ik dacht dat je beter bindParam kan gebruiken. Waaorm weet ik niet zo direct.

5) De opgehaalde data laten zien. Dit doe je door te 'fetchen'=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$row
= $q->fetch();
?>


In dit voorbeeld hebben we maar één rij opgehaald, als je meerdere rijen wilt ophalen doe je het zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
while ($row = $q->fetchtAll()){
    echo $row['naam'];
}

?>


Ik hoop dat alles duidelijk is. Anders vraag je het maar.

@De pro's. Ik denk dat alles wat ik geschreven heb juist, maar het kan natuurlijk dat er een foutje is ingeslopen.


*User input kan van alles zijn, meestal uit een form of uit de url, eigenlijk gewoon alles wat een gebruiker (user) kan invoegen(input)
 
Ama saril

ama saril

15/11/2012 15:36:50
Quote Anchor link
@LedFan (zal je post niet quoten dan wordt het nogal lang :))

Bedankt voor de duidelijke uitleg:
De reden dat ik DACHT dat ik bij selects beter geen prepared statements kon gebruiken was omdat ik in de tutorial het volgende las:
"In tegenstelling tot bijvoorbeeld de MySQLi extensie kent PDO geen methode om het aantal rijen in een resultaatset te bepalen."
Om dit dus te weten te komen moest er een extra query worden gemaakt en.. dat stond me eigenlijk tegen omdat ik dacht dat het qua snelheid niet zo goed ging (maar jij zegt nu dat dat eigenlijk niet uitmaakt tenzij je een robot bent maar dat zou dus geen probleem moeten zijn).

Waar ik dan wel aan zit te denken is dat je wel veel extra code moet schrijven alleen maar om te tellen hoeveel rijen er in een resultaatset zitten vandaar dat ik zo zit te twijfelen of ik PDO wel zo geschikt vond m.b.t. selects (daarvan wil ik vaak het aantal resultaten weten).
 
LEDfan nvt

LEDfan nvt

15/11/2012 15:50:03
Quote Anchor link
Ah. Ik zal een voorbeeldje maken met prepared statements en tellen hoeveel rijen je als resultaat hebt. Dat is toch wat je bedoelt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$sql
= "SELECT naam FROM users"; // Hier gaan we de namen van alle users ophalen
$q = $con->prepare($sql);
$q->execute();
$rows = $q->fetchAll();          // Omdat we meerdere users hebben doen we fetchAll();
$count count($rows);               // Nu gaan we het aantal rijen tellen en deze opslaan in $count
?>


Waarschijnlijk wil je als er 1 of meer resultaten is/zijn de namen nog op het scherm tonen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if ($count !== 0) // Verschillend van nul
{
     foreach($rows as $row){
          echo $row['naam'];

     }  

}
?>


Gewijzigd op 15/11/2012 15:51:06 door LEDfan nvt
 
Ama saril

ama saril

15/11/2012 16:02:11
Quote Anchor link
Hmmm.. dus in principe kan het wel gewoon.. Deze regel uit de tutorial maakte me helemaal van slag:
""In tegenstelling tot bijvoorbeeld de MySQLi extensie kent PDO geen methode om het aantal rijen in een resultaatset te bepalen.".

Maar aangezien je TOCH gewoon count() kan gebruiken heb ik nu geen reden meer om geen PDO te gebruiken. Hartstikke bedankt aan iedereen die hierin heeft gepost, ik denk dat ik nu wel weer vooruit kan :)
 
LEDfan nvt

LEDfan nvt

15/11/2012 16:04:30
Quote Anchor link
Nee dat kopt. PDO heeft geen mysql_num_rows o.i.d. maar zoals in mijn code kan je het zo oplossen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/11/2012 18:23:59
Quote Anchor link
Ik heb hier mijn mening over preps al gegeven.

Quote:
Maar aangezien je TOCH gewoon count() kan gebruiken heb ik nu geen reden meer om geen PDO te gebruiken. Hartstikke bedankt aan iedereen die hierin heeft gepost, ik denk dat ik nu wel weer vooruit kan :)

Als je alleen het aantal rijen wilt weten is het zelfs beter om COUNT(*) te gebruiken.
 
Ama saril

ama saril

09/12/2012 21:38:43
Quote Anchor link
Ger van Steenderen op 15/11/2012 18:23:59:
Ik heb hier mijn mening over preps al gegeven.


Ik heb nu toevallig nodig dat ik een query meerdere keren uitvoer dus in dit geval is PDO wel de goede keuzen denk ik. Bij enkelvoudige queries zou ik mysqli kunnen gebruiken maar is het niet netter als je alles met 1 methode maakt (dus OF alleen PDO, of alleen mysqli?)


Ik zal niet een nieuw topic starten aangezien dit topic toch over PDO gaat.
Is het mogelijk om de pointer te resetten als ik
$row = $stmt->fetch(PDO::FETCH_ASSOC);
dus als ik de fetch functie gebruik zou ik graag later de pointer nog een keer naar het begin zetten. Ik heb al zitten zoeken maar ik kan het echt nergens vinden. Maar het lijkt mij sterk dat het niet mogelijk is? Weet iemand hoe ik dit voor elkaar krijg?
Gewijzigd op 09/12/2012 21:40:49 door ama saril
 



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.