PDO vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

Lead C++ Developer

The role of Lead C++ Developer As Lead C++ Developer at KUBUS you will be responsible for the implementation design of requirements and the software architecture of the desktop applications of BIMcollab, our platform for 3D model validation and issue management aimed at improving the quality of 3D building design models. Better 3D models lead to better buildings, thus contributing to the sustainability of the built environment with smarter use of materials, less waste and energy-efficient buildings. A good user experience is of paramount importance to us; we go for innovation and quality in our development. In your role as

Bekijk vacature »

C# Ontwikkelaar

In het kort Als C# .NET Core ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging

Bekijk vacature »

.NET Developer te Naarden

Bedrijfsomschrijving Voor mijn klant ben ik op zoek naar een .NET Developer om het huidige team te komen versterken. Deze organisatie bevindt zich in de logistieke sector, en zij hebben een eigen ERP systeem ontwikkeld dat zij inzetten ter optimalisatie van de logistieke processen van haar eindklanten. Deze organisatie bestaat inmiddels al ruim 20 jaar, waarbij zij een duidelijke missie hebben, namelijk: het werk van de eindklant makkelijker maken door de systemen die zij leveren. Ze werken over heel de wereld, wat deze organisatie een echte internationale speler maakt. Binnen de organisatie kenmerken ze zich door een dynamische en professionele

Bekijk vacature »

Medior Mobile Developer iOS Amsterdam

Functie What will you be doing as Mobile Developer? As an iOS app developer you will work in a multidisciplinary team of app developers, web developers and designers. You will work on world-class apps that will be used by thousands of people. There is a lot of room for self-development on a technical and personal level. Together with the rest of the team you develop in the newest techniques and you go for the best quality. We work with Kotlin Multiplatform Mobile to develop hybrid apps and we guarantee quality with peer reviews, unit testing and we use a CI/CD.

Bekijk vacature »

Database Developer

Functieomschrijving Wat ga je doen? Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te voeren, maar het is ook prettig als je in de omgeving van Tilburg woont om naar het kantoor te kunnen komen. Vind jij het leuk om jouw creatieve vaardigheden te benutten om complexe systemen te ontwikkelen? Lees dan snel verder! Bedrijfsprofiel Voor wie

Bekijk vacature »

Senior PHP developer

Functie Als Senior PHP developer heb je een sterke mening over de architectuur van projecten en de processen binnen het team. Je bent de sparringpartner voor je Team Lead. Ook ondersteun je met jouw kennis de minder ervaren developers in jouw team. Ze werken regelmatig aan projecten vanaf scratch en dit geeft ruimte om voor nieuwe technieken te kiezen. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en

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 »

Back end developer Python, PHP

Functie Jij als full stack ontwikkelaar zult komen te werken samen met 1 PHP ontwikkelaar een PO en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult voornamelijk (lees 75%) werken aan de roostersoftware. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere flexwerkers ingezet kan worden. Verder willen ze financiële koppelingen gaan maken

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

Front end developer React Sportgames

Functie Als Front end developer ga jij aan de slag bij een gave en bekende organisatie op het gebied van sportgames. Jij gaat aan de slag in een scrumteam met 6 developers die gepassioneerd en actief bezig zijn om spelers kwalitatieve en mooie spelervaringen aan te bieden. Als scrumteam werken ze in drie wekelijkse sprints en begin je iedere ochtend met een stand-up. Als Front end developer werk jij bij deze organisatie voornamelijk met Javascript, html, css en React. Er wordt veel gebruikt gemaakt ook van C#, Docker en Kubernetes. Het team hecht veel waarde aan het leveren van hoogwaardige

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Software Ontwikkelaar PHP gezocht! Wij zijn op zoek naar een ervaren PHP Software Ontwikkelaar om het team van onze opdrachtgever te versterken! De ideale kandidaat zal fungeren als verlengstuk van klanten en complexe technische vraagstukken met enthousiasme benaderen. Naast het werken met de nieuwste technologieën, ben je in staat om aan meerdere projecten tegelijkertijd te werken. Als je deze uitdaging aangaat, werk je nauw samen met front-end developers en draag je bij aan het realiseren van grote veranderingen bij klanten. Het bedrijf zoekt iemand die zichzelf graag uitdaagt en altijd streeft naar het leveren van de beste resultaten.

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

24/01/2025 22:09:57
 
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.