PDO vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Freelance Python Django Webdeveloper

Onze opdrachtgever heeft ruimte voor een extra Python-Django webdeveloper voor een gave app. We zoeken iemand met minimaal vijf jaar ervaring met Python; Nederlands is niet vereist. Het gevoel van een startup...nu uitgroeiend naar een scale-up:) 32-40 uur, start zsm , locatie in de toekomst Amsterdam. Minimaal zes maanden. Liebseth Dijkers 010 2069800

Bekijk vacature »

Java Developer- Spring/ JavaScript/ CI / CD

Java Developer- Spring/ JavaScript/ CI / CD BRAND NEW ROLE AVAILABLE IN THE RANDSTAD, NETHERLANDS, WORKING WITH AN ESTABLISHED IT CONSULTANCY Flevoland location, easily accessible by car and public transport Java/ Open Source/ Agile/ CI / CD Competitive Salary To apply please call +31 (0)208 004 990 or email me; widdowson@searchability.com With our HQ in Almere we a specialist consultancy who are on the lookout for a number of Dutch speaking Java Developers to join the team. We have options for project work across the Randstad. Sourced by: @SearchabilityEU– your 24/7 twitter feed of latest IT vacancies across Europe WHO

Bekijk vacature »

Developer / Java / Cloud

Bedrijfsomschrijving Voor een organisatie in regio Eindhoven zijn wij op zoek naar een Software Developer met goede kennis van Java. Het gaat om een software bedrijf dat te omschrijven is als informeel en open. De mensen die er werken zijn enthousiast, willen graag goede kwaliteit neerzetten, nieuwe technieken worden omarmt en alles is zo ingericht dat nieuwe tools/technieken gemakkelijk geïntegreerd kunnen worden. De organisatie is erg technisch georiënteerd, men gaat echt voor software development en heeft passie voor het vak. Er wordt geïnvesteerd in medewerkers door bijvoorbeeld opleidingen, cursussen en echt tijd voor onderzoek en innoveren. Je krijgt al snel

Bekijk vacature »

ServiceNow developer

In our dynamic and digitalized world, a lot of companies switch to the ServiceNow platform for managing, not only their IT services but also their HR, customer, project or financial services. Accenture is a Global Elite partner of ServiceNow and is realizing transformational implementation projects at its clients in all possible domains and industries. Due to our significant growth we are looking for candidates to strengthen our highly diverse team. Your job As a ServiceNow Developer, you will build and automate workflows in ServiceNow and help our clients with implementation of new services and functionality in the platform. You will

Bekijk vacature »

C# backend developer, Rotterdam

Voor een grote organisatie in Rotterdam zijn we op zoek naar iemand met ruime ervaring in het ontwikkelen van applicaties in .NET C#. Het gaat hier om een organisatie met een maatschappelijke impact. Hun systemen zijn gericht op een groot aantal klanten waarbij het belangrijk is dat de applicaties helder, toegankelijk en up-to-date zijn. Als .NET C# developer werk je aan uiteenlopende applicaties, APIs en het interne framework. Dit doe je binnen een SCRUM team en meedenkt binnen het hele proces. Het team bestaat uit meerdere C# developers variërend van medior tot senior. Er is dus veel kennis en ervaring

Bekijk vacature »

.Net ontwikkelaar gezocht in omgeving Weert

Bedrijfsomschrijving Onze opdrachtgever is één van de meest innovatieve en leuke organisaties van Zuid-Nederland. Vanuit hun kantoor in de buurt van Weert werken ze voor verschillende opdrachtgevers aan de realisering van zeer complexe projecten. Zo bouwen ze webbased maatwerk software, websites, webshops en creëren ze de vormgeving en content voor een aantal grote namen. Binnen het team heerst er een nuchtere sfeer, de focus ligt op het afleveren van goed werk waarbij er volgens de laatste trends en technologieën ontwikkeld wordt. Functieomschrijving Samen met ongeveer 4 collega’s zal jij per project een team vormen. Ieder heeft zijn eigen sterke kracht

Bekijk vacature »

Product Developer (Freelancer)

Product Developer for 'meat replacement products' working as part of The Vegetarian Butcher R&D team. Responsibilities: To support the R&D team with product development work in the lab through: Development of product formulations according to the business product design brief, processability and safety requirements Perform product and ingredient physical-chemical analyses according to needs Recording and reporting of experimental data. Ensure high-quality documentation of work in available software systems To support implementation of approved formulation in the sourcing unit through pilot plant and plant trials To ensure compliance to the Unilever Code of Business Principles and all SHE and QA policies,

Bekijk vacature »

Java Developer / Redesign / Complex / Overheid

Bedrijfsomschrijving Bij deze overheidsinstantie zal je terecht komen in een DevOps team van 5 man/vrouw groot. 4 daarvan houden zich bezig met het (door)ontwikkelen van de applicaties en 1 iemand is verantwoordelijk voor het testwerk. Echter, doordat ze steeds meer geautomatiseerd testen en richting CI/CD willen gaan, zal jij je daar ook zeker mee gaan bemoeien! Zoals gezegd kom je in een erg complexe omgeving terecht. Dit heeft voornamelijk te maken met het feit dat je met diverse Europese lidstaten en veel verschillende componenten te maken hebt. Dit maakt het daardoor erg uitdagend, maar niet minder leuk! Daarnaast zijn zij

Bekijk vacature »

C# .NET Developer

Bedrijfsomschrijving Je komt terecht bij een innovatieve en dynamische organisatie, die gespecialiseerd is in het ontwerpen, bouwen en implementeren van systemen voor gebruik binnen (semi-)industriële omgevingen. Het is een organisatie met meer dan 15 jaar ervaring in de industriële branche. Tevens zijn ze een ervaren en betrouwbare partner die "state of the art" oplossingen biedt. De systemen worden wereldwijd door organisaties gebruikt en zijn volledig geautomatiseerd. De systemen zijn via het web toegankelijk gemaakt door diverse .NET oplossingen. De oplossingen die worden aangeboden worden gekenmerkt door hun soliditeit en betrouwbaarheid. Bij deze organisatie wordt er veel waarde gehecht aan een

Bekijk vacature »

IAM developer

Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen met andere

Bekijk vacature »

Mobile App Developer

Ons Mobile ontwikkelteam zoekt een fanatieke Mobile App Developer. Ben jij creatief en heb je passie voor het ontwikkelen van apps? Dan zijn wij op zoek naar jou! Jouw baan ChipSoft heeft al diverse apps uitgebracht en het aantal gebruikers hiervan neemt snel toe. De apps doen het erg goed bij de zorginstellingen. Je kunt hierbij denken aan apps verpleegkundigen, thuiszorgmedewerkers, de logistieke dienst en - natuurlijk - de artsen zelf. Door jouw hands-on mentaliteit, eigenwijsheid en technisch inzicht kun je nauwkeurig herbruikbare software schrijven. Die software sluit naadloos aan op onze ‘back end’ (HiX, onze ICT-totaaloplossing voor de zorg).

Bekijk vacature »

Dynamics CRM / Developer

Bedrijfsomschrijving Als onderdeel van een grote IT-dienstverlener is deze organisatie ontstaan en is nu gegroeid tot organisatie van bijna 30 man groot. Iedereen binnen deze organisatie houdt zich bezig met het ontwikkelen, beheren, onderhouden van bedrijfskritische applicaties. In tegenstelling tot de moederorganisatie, werken de medewerkers bij deze organisatie gemiddeld drie dagen in de week gewoon op het eigen kantoor in Utrecht. Mede hierdoor heerst er een erg informele sfeer waardoor jij je binnen no-time thuis voelt! De organisatie staat op het punt om een heel nieuw team met specialiteit Dynamics CRM op te tuigen. Nee, je hoeft zeker nog geen

Bekijk vacature »

Medior PHP Developer

As a PHP Developer at Coolblue, you ensure that our webshops are bizarre fast and super tight. How do I become a PHP Developer at Coolblue? As a Medior PHP Developer you work together with other development teams to make our webshop work as optimally as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little C # or Javascript. Want to become an PHP Developer at Coolblue? Else will explain how to do that. You enjoy doing this Writing PHP code, but can also find your way in C

Bekijk vacature »

C# .NET Developer

Bedrijfsomschrijving Onze klant bouwt dynamisch en voornamelijk op .NET gebaseerde software voor diverse organisaties die zowel nationaal als internationaal opereren. De vestiging in Apeldoorn vormt onderdeel van een grotere organisatie met meerdere locaties in Nederland. De focus hier is om effectieve software te bouwen om data intensieve processen zo goed en overzichtelijk mogelijk te laten verlopen. Om dit soort processen goed te waarborgen en dat de juiste doelstellingen worden gehaald bieden zij velen oplossingen. Een voorbeeld hiervan is maatwerk mobile apps die gekoppeld worden aan zowel eigen software als die van diverse andere organisaties om de juiste data flows mogelijk

Bekijk vacature »

C# developer gezocht (distributed systems, SOA, NS

Ben je een C# developer met een oplossingsgerichte mentaliteit en op zoek naar een veelzijdige baan binnen een kleinschalig dynamisch bedrijf, waar je mee kunt denken in het groter geheel? Waar je met mensen komt te werken die betrokken zijn en een gemeenschappelijk gevoel van verantwoordelijkheid hebben? En waar je werkt aan schaalbaarheidsuitdagingen zodat jouw software grote hoeveelheden data kan verwerken? Nieuwsgierig? Lees dan verder! Voor een Rotterdams bedrijf zijn we op zoek naar een enthousiaste, en met name leergierige, full stack developer of een web developer die graag full stack wil worden. Het bedrijf biedt geavanceerde technische oplossingen die

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

17/01/2021 06:33:22
 
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.