PDO vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

Back End Developer

Als Back End developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Je hebt een focus op de back end van onze software, daarvoor werken wij hoofdzakelijk met C# en .NET. Wij hanteren een full-stack benadering, wat betekent dat je naast de back-end ook meehelpt bij andere onderdelen van de code. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

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 »

Medior Front-end 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 websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-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 uitwerken van designs tot functionele layouts Je

Bekijk vacature »

Lead Fullstack developer

Functie omschrijving Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Wij zijn op zoek naar een full stack developer die zich bezig wil bezig houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator door middel van

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 »

Lead React Developer

Dit ga je doen Als Lead React Developer zul jij je voornamelijk gaan bezighouden met: Het werken aan tal van uiteenlopende projecten waar gloednieuwe (web)applicaties van scratch af aan ontwikkeld worden met o.a. React (Native) en Drupal; Het aansturen van een team bestaande uit 5-6 talentvolle en gedreven ontwikkelaars; Het adviseren en meedenken over nieuwe (technische) oplossingen en te gebruiken tools/frameworks; Het meedenken over de architectuur en de juiste implementatiebeslissingen maken; De doorontwikkeling van huidige applicaties. Hier ga je werken Als je inderdaad een ervaren Lead React Developer bent die zichzelf graag nog verder wil ontwikkelen dan is het goed

Bekijk vacature »

.NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. 50% van jullie werkzaamheden is maatwerk en de overige 50% is

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 »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

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 »

(Junior) PHP Ontwikkelaar bij een retail bedrijf i

Bedrijfsomschrijving Ben jij een ervaren PHP ontwikkelaar met een passie voor retail en ICT? Wil jij werken in een team dat zich bezighoudt met het ontwikkelen van uitdagende applicaties voor een groot retailbedrijf in Delft? Dan zijn zij op zoek naar jou! Functieomschrijving Als PHP Ontwikkelaar werk je in een team aan de ontwikkeling van applicaties die door de gehele organisatie worden gebruikt. Je bent verantwoordelijk voor het ontwikkelen, testen en implementeren van deze applicaties. Je werkt hierbij nauw samen met andere ontwikkelaars, projectmanagers en stakeholders binnen de organisatie. Je taken bestaan onder andere uit: Ontwikkelen van nieuwe functionaliteiten en

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

22/12/2024 06:43:49
 
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.