PDO vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

PHP developer

Functie omschrijving Voor een klein bedrijf in de buurt van Nieuwegein zijn wij per direct op zoek naar een talentvolle PHP developer. Er wordt veel ruimte geboden voor eigen initiateven, waardoor je een mooie stempel kan drukken op jouw eigen werkzaamheden (zowel operationeel als strategisch). Het bedrijf heeft middels externe programmeurs een multimedia platform ontwikkeld, maar willen geleidelijk de ontwikkeling naar binnen halen. Om die reden zoeken zij een communicatieve interne PHP developer die graag meebouwt aan het succesvolle product. Je gaat de volgende werkzaamheden verrichten: Platform beheren en programmeren (PHP, MySQL, JQuery, Javascript, XML & HTML); Communicatie en aansturing

Bekijk vacature »

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

.NET Developer

Functie omschrijving Ben jij een senior .NET developer en heb jij tevens ervaring als teamlead? Ben jij iemand met een helikopterview en denk jij graag mee met de klanten? Dan zijn wij op zoek naar jou! Voor een geweldig bedrijf zijn wij namelijk op zoek naar een ervaren .NET developer. Het bedrijf houdt zich bezig met het ontwerpen en bouwen van websites, portalen en applicaties voor met name zorg- en onderwijsinstellingen en overheidsinstanties. Jouw taken: Het fungeren als Lead Developer; Het meedenken met de business (dit vergt commercieel inzicht); Het begeleiden van diverse projecten (van klein tot groot); Het ontwerpen

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

.NET developer

Functie Als junior .NET ontwikkelaar ga jij aan de slag in één van de 5 IT teams van dit bedrijf. Jullie werken op basis van interne klantprojecten aan voornamelijk webapplicaties. Dit betekent dat jij continu uitgedaagd wordt en veelal met verschillende soorten projecten bezig bent. Het gave is dan ook dat jullie als team samen bekijken welke technieken het beste passen bij het project waar jullie verantwoordelijk voor zijn. Zo kan het zijn dat jij als .NET developer gaat werken aan een project, maar dat jullie als team liever gebruik maken van Haskell of F# om de klus te klaren.

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 »

.NET Developer Medior Senior

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Herbruikbare componenten maken; Testen; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als .NET Developer kom jij terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als .NET Developer werk jij aan het ontwikkelen van verbeterde software voor

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 »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Junior Fullstack Developer

Functie omschrijving Heb jij je universitair diploma Informatica afgerond en ben jij op zoek naar een startersfunctie waar jouw ontwikkeling in een hoog vaandel staat? Voor een softwarebedrijf in Amsterdam zijn wij op zoek naar een Junior Fullstack Developer. Je begint met een op maat gemaakte training om de kennis bij te spijkeren die jij nog mist. Uiteraard leer je het meeste tijdens je werk, maar de training geeft je hiervoor alvast de juiste handvatten. Je kunt het volgende verwachten! Jij ontwikkelt in technieken als Java, Javascript en SQL. Je werkt hierbij volgens de Agile/Scrum methode; Na het afronden van

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »

Ervaren C#.NET developer

Functieomschrijving We zijn op zoek naar een ervaren C#.NET programmeur voor een moderne werkgever in de regio Prinsenbeek. Als programmeur zal je bezig zijn met het ontwikkelen van op maat gemaakte webapplicaties voor verschillende klanten, waarbij je ervoor zorgt dat complexe processen zo goed mogelijk worden ondersteund. Je takenpakket omvat onder andere: Werken met databases en dataopslagoplossingen, implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens, evenals het schrijven van technische documentatie en gebruikershandleidingen. Het ontwikkelen en onderhouden van C#.NET-applicaties. Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen. Het schrijven van hoogwaardige en herbruikbare codes.

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

21/11/2024 18:26:16
 
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.