Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D
|
|
- Victor Coppens
- 8 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Hoofdstuk 6 PHP Data Objects Cursus PHP & MySQL Groep D
2 Hoofdstuk 1: PHP Data Objects 1.1 Inleiding Tegenwoordig kun je er bij het ontwikkelen van een website bijna niet meer omheen: het gebruik van een database. Of je nu bezig bent met een persoonlijke website met gastenboek, een site voor je bedrijf met support forum of met een ingewikkelde webshop; de basis van elke goede website wordt gevormd door een database. Er zijn vrij veel verschillende database systemen die je voor dit doeleinde kunt gebruiken en allemaal kennen ze hun eigen functies. Aangezien elke database anders is, vereist het werken ermee in PHP steeds een andere aanpak. Voor de meest gebruikte database systemen waaronder MySQL, PostgreSQL en SQLite, biedt PHP standaard ondersteuning. Echter zul je voor het benaderen van deze verschillende databases altijd nog verschillende functies gebruiken. Met de komst van PHP Data Objects (PDO) in PHP 5.1 hebben we de beschikking over een uiterst handige extensie voor het benaderen van verschillende databases. Naast het gebruik van een object georiënteerde notatie biedt deze extensie ook nog andere voordelen. Het wordt namelijk een stuk eenvoudiger om resultaat sets te verwerken, prepared statements uit te voeren en transactions te gebruiken. Nota: Vanaf PHP6 zullen de standaard database functies (mysql_*, pg_*, etc) niet standaard meer ondersteund worden. Hoewel ze waarschijnlijk nog lange tijd als extensie beschikbaar blijven, is het verstandig om nu al naar alternatieven te kijken. Vooral als je een nieuw systeem aan het ontwikkelen bent is het gebruik van PDO zeker een aanrader. In dit hoofdstuk van de cursus zullen we dieper op de werking van de PDOextensie ingaan, en dit aan de hand van verschillende voorbeelden met betrekking tot de belangrijkste functies. Voor een allesomvattende handleiding over PDO verwijzen we je graag door naar php.net.
3 1.2 Gebruik van de PDO-extensie Voor het gebruik van de PDO extensie moeten we natuurlijk wel eerst weten of de database die we willen gebruiken wel ondersteund wordt. Om PDO met een bepaalde database te gebruiken, moeten we de juiste PDO-driver geïnstalleerd hebben. Controleren welke databasedrivers geïnstalleerd zijn echo <pre> ; print_r(pdo::getavailabledrivers()); echo </pre> ; Dat levert dan het volgende resultaat op. Array ( [0] => sqlite2 [1] => pgsql [2] => mysql ) Dit betekent dat we op dit moment de juiste drivers geïnstalleerd hebben om te werken met de databasesystemen MySQL, PostgreSQL en SQLite. Er worden echter nog een boel andere databasesystemen ondersteund, zoals je uit onderstaand lijstje kunt opmaken. MySQL PostgreSQL SQLite Microsoft SQL Server ODBC Oracle Daar wij doorheen heel onze cursus met MySQL zullen werken, laten we de andere systemen buiten beschouwing. Voor meer informatie over de samenwerking tussen PDO en de andere systemen verwijzen we je opnieuw door naar php.net.
4 2.2.1 Verbinden met een Database Het verbinden met een database met behulp van PDO is kinderlijk eenvoudig. Het komt eigenlijk er op neer dat je een nieuwe instantie van de PDO klasse gaat creëren. Natuurlijk moet je bij het instantiëren van de klasse wel de juiste parameters meegeven. Hieronder zie je hoe dat in z n werk gaat voor een verbinding met een MySQL database. t', 'user', 'password'); Dat je voor het opzetten van een verbinding met elke willekeurige database telkens dezelfde regel PHP kunt gebruiken, heeft te maken met het feit dat het eigenlijke verbinden met de database achter de schermen afgehandeld wordt. De meegegeven parameters worden door de extensie geïnterpreteerd en een verbinding met de juiste database wordt gemaakt Sluiten van een Verbinding Het sluiten van een verbinding is al even eenvoudig. Het enige dat je hier dient te doen, is de instantie van de PDO-klasse vernietigen. Dat ziet er dan als volgt uit. $db = NULL; Het handmatig sluiten van een databaseverbinding is in principe niet nodig. Aangezien het bestaan van de verbinding direct afhangt van het bestaan van de instantie van de PDO klasse, zal de verbinding verbroken worden zodra een script eindigt. Het veelvuldig tussendoor sluiten en openen van verbindingen kan tot een zeker performance verlies leiden, zeker als je verbinding maakt met een externe database server.
5 1.3 Uitvoeren van Queries Nu we weten hoe we verbinding maken met een database, kunnen we verder gaan met het uitvoeren van queries. De PDO klasse heeft hiervoor twee methodes beschikbaar, genaamd query() en exec(). Er zit een klein verschil in werking van deze twee methodes. De eerste, query(), voert enkel de query uit en geeft een resultaat terug. De tweede daarentegen voert de query uit en geeft daarnaast het aantal aangepaste rijen van een INSERT, UPDATE of DELETE query terug. Een SELECT query t','user', 'password'); $sql = "SELECT naam FROM tabel"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; Allereerst maken we een nieuwe verbinding door een nieuwe instantie van de PDO klasse aan te maken. Vervolgens voeren we met de query() methode een SQL query uit. De resultaat set kunnen we daarna uitlezen met een for each loop. Een UPDATE query t','user', 'password'); $sql = "UPDATE tabel SET naam = 'Martijn' WHERE naam = 'Pietje'"; $affected_rows = $db->exec($sql); echo 'Aantal aangepaste rijen: '.$affected_rows;
6 Nu voeren we de query uit met de exec() methode die als resultaat dus een aantal aangepaste rijen teruggeeft. Op deze manier kun je dus direct controleren of er wel wat gewijzigd is. Een INSERT query t','user', 'password'); $sql = " INSERT INTO tabel (naam) VALUES ('Pieter-Jan') "; $results = $db->exec($sql); $insert_id = $db->lastinsertid(); echo ID van laatst ingevoegde record:. $insert_id; Vanzelfsprekend ziet een INSERT query er precies hetzelfde uit. Vaak wil je na een INSERT query het id van het laatst ingevoegde record weten. Met PDO kun je dat achterhalen met de lastinsertid() methode zoals te zien is in het voorbeeld. Natuurlijk moeten we niet vergeten om de in te voegen variabelen te beveiligen om SQL-injectie te voorkomen. Waar we normaal altijd mysql_real_escape_string() zouden gebruiken, kunnen we nu de quote() methode van de PDO klasse gebruiken. // Gegevens uit een gepost formulier verwerken t','user', 'password'); $naam = $db->quote($_post['naam']); $sql = " INSERT INTO tabel (naam) VALUES ('".$naam."') "; $db->exec($sql);
7 1.4 Foutafhandelingen In de voorbeelden op de vorige pagina hebben we nog geen enkele vorm van foutafhandeling toegepast, maar natuurlijk mag dat niet vergeten worden. Foutafhandeling in een PHP-script is een van de belangrijkste dingen die er zijn. PDO biedt drie verschillende manieren van foutafhandeling. 1. SILENT - Fouten worden onderdrukt en zullen handmatig opgevraagd moeten worden. 2. WARNING - Gebruikt de error_handler van PHP en geeft een E_WARNING. 3. EXCEPTION - Gebruikt PDOException klasse. Van dit lijstje is SILENT de standaard instelling. Dat betekent dat je altijd de code en informatie van de foutmelding met de methodes errorinfo() en errorcode() zult moeten ophalen om te controleren of er fouten opgetreden zijn. Een uitzondering op deze regel is een fout bij het verbinden met de database, oftewel het instantiëren van de PDO klasse. In dat geval wordt er een PDOException object aangemaakt dat op te vangen is met een /catch combinatie. Dit staat beschreven in onderstaand voorbeeld. $db = new PDO('mysql:host=localhost;dbname=be staat_nie echo $e->getmessage(); Dit zal de volgende melding geven: SQLSTATE[42000] [1049] Unknown database 'bestaat_niet' Zoals we zien krijgen we netjes een melding dat de opgegevens database niet bestaat. Het is belangrijk om steeds op deze manier te controleren of een verbinding gelukt is. Mocht er namelijk iets fout gaan en de fout wordt niet afgehandeld, dan zal PHP een backtrace weergeven waarin mogelijk alle details van de databaseverbinding staan. Dit omvat dus mogelijk ook gegevens als gebruikersnaam en wachtwoord van je database!
8 Als we met de standaard instelling SILENT een fout maken in een query die we uitvoeren, krijgen we daar geen foutmelding van te zien. Bijvoorbeeld: $sql = "SELECT naam FROM bestaat_niet"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo $e->getmessage(); De enige melding die we nu krijgen is: Warning: Invalid argument supplied for foreach() We zien dat $results dus geen geldig argument voor de foreach() is en dus doet dat ons vermoeden dat er iets fout gegaan is met de query. Maar als dat zo is, zouden we daar graag een foutmelding van krijgen. In dat geval zouden we ervoor kunnen kiezen om de WARNING instelling te gebruiken. Dan wordt er naast het aanmaken van een error code ook een standaard E_WARNING melding gegeven. Het type foutafhandeling kunnen we instellen door het type toe te kennen aan het attribuut dat de foutafhandeling bepaald. Dit doen we met de setattribute() methode. Op de volgende pagina vind je een voorbeeld van foutafhandeling met een WARNING. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_WARNING); $sql = "SELECT naam FROM bestaat_niet";
9 $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo $e->getmessage(); De foutmelding die nu gegeven wordt: Warning: PDO::query() [function.pdoquery]: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.bestaat_niet' doesn t exist. Warning: Invalid argument supplied for foreach(). We zien dat er zowel een foutmelding gegeven wordt op het punt waar de query uitgevoerd wordt als op de plaats van de foreach(). Zoals je altijd te werk gaat met debuggen, los je nu ook eerst de eerste fout op. Dit zal in dit geval ook de tweede foutmelding laten verdwijnen. Als laatste instelling hebben we EXCEPTION over. In dat geval zal er net zoals in het geval van de fout met de verbinding, voor de fout een PDOException object aangemaakt worden. De gegevens van deze foutmelding kunnen we wederom uitlezen in het catch gedeelte van het script.
10 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM bestaat_niet"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo $e->getmessage(); De volgende foutmelding werd gegenereerd: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test. bestaat_niet' doesn't exist. We zien dat we hier alleen een foutmelding op de query te zien krijgen en geen verdere meldingen dat bijvoorbeeld het argument van de foreach() niet juist is. Zoals gewoonlijk kunnen we natuurlijk het hele PDOException object uitkleden en alle informatie over een fout naar boven halen, dit staat beschreven in het voorbeeld op de volgende pagina.
11 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM bestaat_niet"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo <pre> ; echo Regelnummer:. $e->getline(). <br> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(). <br/> ; echo </pre> ; De enige melding die we nu krijgen is: Regelnummer: 8 Bestand: Dummy File Path Foutmelding: SQLSTATE[42S02]: Base table or view not found: Table 'test.bestaat_niet' doesn't exist Wij zullen steeds de Exception gebruiken als foutafhandeling. Je gebruikt de /catch syntax immers toch al om te controleren of de verbinding gelukt is. Daarnaast krijg je alle opvolgende foutmeldingen die het gevolg zijn van een foute query niet te zien en kun je helemaal zelf bepalen welke informatie je wel wilt tonen.
12 1.5 Prepared Statements Op dit punt zul je misschien denken dat de PDO-extensie niet veel meer biedt dan de mogelijkheid om te verbinden met meerdere database systemen en het uitvoeren van databasegerelateerde taken. Dat is zeker niet het geval aangezien PDO met een aantal mooie features komt, waaronder het werken met prepared statements. Deze prepared statements bieden de programmeur de mogelijkheid tot het creëren van queries die veiliger zijn, waarvan de performance beter is en die eenvoudiger te noteren zijn. Het grote voordeel van prepared statements is dat een bepaalde query op een efficiënte manier vele malen achter elkaar uitgevoerd kan worden. Bij het gebruik van prepared statements wordt er allereerst een template van de uit te voeren query naar de server gestuurd. Deze wordt door de server gecontroleerd op syntax fouten en uitgevoerd om te controleren of de query logisch is. Vervolgens wordt deze opgeslagen in een speciale buffer. Op het moment dat de query daadwerkelijk uitgevoerd moet worden, stuur je de in de query in te vullen gegevens naar de database. Vervolgens wordt een complete query gevormd en uitgevoerd. Op de volgende pagina vind je een voorbeeld van een prepared INSERT statement.
13 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = " INSERT INTO tabel (naam) VALUES (:naam) ; $stmt = $db->prepare($sql); $stmt-> bindparam(':naam', $naam, PDO::PARAM_STR); $naam = Nick ; $stmt->execute(); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; In dit script hebben we eerst een template gemaakt van de INSERT query die we willen gebruiken. Het stukje ':naam' in de template is een zogenaamde parameter marker of placeholder en geeft de plaats aan waar straks een variabele ingevuld gaat worden. Vervolgens roepen we de prepare() methode aan om de query naar de server te sturen en te laten controleren. Als dat gelukt is, gebruiken we de bindparam() methode. Met deze methode koppelen we een bepaalde variabele aan een bepaalde placeholder. Op die manier weet PHP straks welke variabele hij onder welke naam naar de server moet sturen zodat deze het begrijpt. De optionele derde parameter van deze methode geeft aan als wat voor type de variabele behandeld moet worden, in dit geval dus een string. Nadat we de variabele vervolgens een waarde hebben gegeven, sturen we alles wederom naar de server met de execute() methode. Als alles goed is gegaan krijgen we geen foutmeldingen en zal er een nieuw record ingevoegd zijn. Natuurlijk is het ook mogelijk om meerdere placeholders te gebruiken om meerdere gegevens in te voeren. En daarnaast kunnen we ook nog eens meerdere queries achter elkaar uitvoeren.
14 Hieronder vind je een voorbeeld van een prepared statement met meerdere gegevens en meerdere queries. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $personen = array( array( 'naam' => 'Martijn', ' ' => 'martijn@fenex.com', 'leeftijd' => 19 ), array( 'naam' => 'Joris', ' ' => 'joris@fenex.com', 'leeftijd' => 20 ), array( 'naam' => 'Maarten', ' ' => maarten@fenex.com', 'leeftijd' => 18 ) ); $sql = " INSERT INTO tabel (naam, leeftijd, ) VALUES (:naam, :leeftijd, : ) "; $stmt = $db->prepare($sql); $stmt-> bindparam(':naam', $naam, PDO::PARAM_STR); $stmt-> bindparam(': ', $ , PDO::PARAM_STR); $stmt-> bindparam(':leeftijd', $leeftijd, PDO::PARAM_INT); foreach($personen as $persoon) $naam = $persoon['naam']; $ = $persoon[' ']; $leeftijd = $persoon['leeftijd']; $stmt->execute(); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Voor elke placeholder die we in de query template aangegeven hebben, roepen we de bindparam() methode aan om een variabele te koppelen.
15 We lezen de array met gegevens uit met een for each loop, geven de gekoppelde variabelen een waarde en voeren de statement uit met de execute() methode. Je ziet dat er geen gebruik gemaakt wordt van de quote() methode om in te voegen strings te beveiligen. Dit is niet nodig aangezien de execute() methode al zorgt voor een veilige afhandeling van de gegevens. Daarnaast is er nog een andere manier waarop we de prepared statement uit kunnen voeren. We kunnen alle gegevens namelijk ook in een array als parameter meegeven aan de execute() methode van het statement. Hieronder zie je hoe we statements met een gegevensarray als parameter zouden kunnen uitvoeren. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $personen = array( array( ':naam' => 'Martijn', ': ' => 'martijn@fenex.com', ':leeftijd' => 19 ), array( ':naam' => 'Joris', ': ' => 'joris@fenex.com', ':leeftijd' => 20 ), array( ':naam' => 'Maarten', ': ' => 'maarten@fenex.com', ':leeftijd' => 18 ) ); $sql = " INSERT INTO tabel (naam, leeftijd, ) VALUES (:naam, :leeftijd, : ) "; $stmt = $db->prepare($sql);
16 foreach($personen as $persoon) $stmt->execute($persoon); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Op de volgende pagina vind je nog een voorbeeld, waar we een UPDATE query gaan uitvoeren met een prepared statement. Dit gelijkt erg op het INSERT voorbeeld, maar kent toch één belangrijk verschil. Bij een UPDATE of DELETE query is het namelijk altijd van belang om te controleren of er wel degelijk rijen aangepast zijn. Met de methode rowcount() kunnen we het aantal aangepaste rijen van het laatste uitgevoerde statement ophalen. Mocht dit gelijk zijn aan 0 dan creëren we een nieuw PDOException object met de betreffende melding
17 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $personen = array('martijn', 'Maarten'); $sql = " UPDATE tabel SET = 'geen mail' WHERE naam = :naam "; $stmt = $db->prepare($sql); $stmt-> bindparam(':naam', $naam, PDO::PARAM_STR); foreach($personen as $persoon) $naam = $persoon; $stmt->execute(); if($stmt->rowcount() == 0) throw new PDOException( Er zijn ge en rijen gewijzigd in de UPDATE que ry met naam:. $naam); echo '<pre>'; echo 'Regel: '.$e->getline().'<br>'; echo 'Bestand: '.$e->getfile().'<br>'; echo 'Foutmelding: '.$e->getmessage(); echo '</pre>';
18 Naast het invoegen, updaten en verwijderen van records met een prepared statement, is het ook mogelijk om een SELECT query uit te voeren. Hoewel een het uitvoeren van een prepared SELECT statement veel lijkt op de voorbeelden hierboven, werkt het toch net iets anders. We hebben hier namelijk te maken met gegevens die we uit de database ophalen, dus zullen we die gegevens op een bepaalde manier zichtbaar moeten maken. Hieronder vind je een voorbeeld waarbij we de gegevens uitlezen met een fetch(). $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM tabel WHERE leeftijd > :leeftijd"; $stmt = $db->prepare($sql); $stmt-> bindparam(':leeftijd', $leeftijd, PDO::PARAM_INT); $leeftijd = 18; $stmt->execute(); while($row = $stmt->fetch(pdo::fetch_assoc)) echo $row['naam']. <br /> ; echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Dit geeft als resultaat iets als: Martijn - 19 Joris - 20 Tot aan de execute() methode is dit script precies hetzelfde als voorgaande voorbeelden. Maar zoals ik al zei moeten we de resultaten van de query natuurlijk zichtbaar kunnen maken. Hier gebruiken we de fetch() methode voor.
19 Aan de fetch() methode kunnen we optioneel een parameter meegeven om aan te geven hoe we willen dat de rijen gefetched worden. Dit is vergelijkbaar met de optionele parameter van de mysql_fetch_array() functie. De belangrijkste beschikbare parameters zijn: PDO::FETCH_ASSOC - Een rij als associatieve array PDO::FETCH_NUM - Een rij als numerieke array PDO::FETCH_BOTH - Een rij zowel associatief als numeriek te gebruiken (standaard) In tegenstelling tot bijvoorbeeld de MySQLi extensie kent PDO geen methode om het aantal rijen in een resultaatset te bepalen. Wil je dit aantal weten, dan zul je een extra query uit moeten voeren om dat aantal te bepalen. Het makkelijkste is het om hier een query met COUNT() voor te gebruiken: zie onderstaand voorbeeld. $sql = "SELECT COUNT(naam) FROM tabel WHERE leeftijd > 18"; $row = $db->query($sql)-> fetch(pdo::fetch_assoc); echo $row['aantal']; // Output: 2 echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; In dit voorbeeld gebruiken we query() om een eenvoudige query uit te voeren en fetch() om het resultaat van de query in een array te zetten. De variabele $row['aantal'] zal in dit geval het aantal rijen in de resultaat set van de query bevatten. Verder met het fetchen van gegevens. Een tweede methode die we daarvoor kunnen gebruiken is fetchall(), deze zullen we aan de hand van een voorbeeld verder toelichten op de volgende pagina.
20 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM tabel WHERE leeftijd > :leeftijd"; $stmt = $db->prepare($sql); $stmt->bindparam(':leeftijd', $leeftijd); $leeftijd = 18; $stmt->execute(); $result = $stmt->fetchall(); foreach($result as $row) echo $row['naam']. <br /> ; echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Wederom zien we hier hetzelfde resultaat: Martijn - 19 Joris - 20 De fetchall() methode doet dus niets meer dan alle rijen uit de resultaat set onder een nieuwe key in een array zetten. Vervolgens kunnen we deze array met een for each loop uitlezen. Aan de fetchall() methode kunnen we natuurlijk ook weer een parameter meegeven om aan te geven hoe de resultaten gefetched moeten worden.
21 1.6 Transacties Transacties klinken de doorgewinterde databasegebruiker waarschijnlijk zeer bekend in de oren, maar niet iedereen zal weten wat je met dit principe kunt. Simpel gezegd heb je bij transacties in een database de mogelijkheid om een reeks queries uit te voeren zonder dat je eventuele aanpassingen definitief doorvoert. Aan het einde van deze reeks kun je COMMIT gebruiken om de wijzigingen definitief door te voeren of ROLLBACK om alle wijzigingen terug te draaien. De PDO extensie biedt ons drie methodes voor het werken met transacties: begintransaction(), commit() en rollback(). De eerste methode roepen we aan het begin aan, deze zorgt ervoor dat autocommit uitgezet wordt en dat queries pas definitief doorgevoert worden zodra commit() aangeroepen wordt. De rollback() methode kunnen we gebruiken om gemaakte wijzigingen terug te draaien mocht er een fout optreden. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $db->begintransaction(); $db->query("insert INTO tabel (naam) VALUES ('Martijn')"); $db->query("insert INTO tabel (naam) VALUES ('Nick')"); $db->query("insert INTO tabel (naam) VALUES ('Maarten')"); $db->query("insert INTO tabel (naam) VALUES ('Joris')"); $db->commit(); if(isset($db)) $db->rollback(); echo '<pre>'; echo 'Regel: '.$e->getline().'<br>'; echo 'Bestand: '.$e->getfile().'<br>'; echo 'Foutmelding: '.$e->getmessage(); echo '</pre>';
22 We zien hier inderdaad de drie methodes waar ik het al eerder over had terug. Na begintransaction() voeren we een viertal INSERT queries uit. Als alles goed gaat, voeren we de wijzigingen definitief door met commit(). Mocht er een fout optreden dan vangen we die op in het catch gedeelte van het script en draaien we alle reeds gemaakte wijzigingen terug. We moeten we even controleren of $db bestaat, aangezien dit gedeelte ook fouten in de verbinding opvangt. Als daar een fout in optreedt, zal $db niet bestaan en zal het aanroepen van rollback() niet mogelijk zijn. Hoewel ik hier nu vier losse queries gebruikt heb, kunnen we deze natuurlijk ook weer vervangen door een prepared statement. Dat zou een nettere oplossing geven. Een ander goed voorbeeld om het gebruik van transacties te verduidelijken is een geldtranscatie tussen twee bankrekeningen van respectievelijk persoon A en B. Er zal 500 euro overgemaakt worden van persoon A naar persoon B, maar persoon A mag natuurlijk geen negatief saldo krijgen. Daarnaast kan het totale saldo uit de tabel nooit groter of kleiner worden, er kan immers geen geld ontstaan of verdwijnen. Dat betekent dat de ene query niet uitgevoerd mag worden zonder dat de ander ook uitgevoerd wordt. Duidelijk iets om een transactie voor te gebruiken. Dit voorbeeld zie je uitgewerkt over de laatste pagina s van dit hoofdstuk. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $queries[] = "UPDATE rekeningen SET saldo = saldo WHERE klant = 'A'"; $queries[] = "UPDATE rekeningen SET saldo = saldo WHERE klant = 'B'"; $controle = "SELECT saldo FROM rekeningen WHERE klant = 'A'"; $db->begintransaction();
23 foreach($queries as $query) $affected = $db->exec($query); if($affected == 0) throw new PDOException( Update query niet geslaagd:. $query); $result = $db->query($controle); $row = $result->fetchall(); if($row[0]['saldo'] < 0) throw new PDOException( Saldo niet toereikend ); $db->commit(); echo <pre>. print_r (get_class_methods($db),true). </pre> ; if(isset($db)) $db->rollback(); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; We beginnen met het uitvoeren van de UPDATE queries. Mocht daar een fout in optreden, dan willen we dat natuurlijk weten dus maken we in dat geval een nieuw PDOException object aan. Daarna voeren we de controle query uit en controleren het resultaat. Als dit kleiner is dan 0 heeft persoon A een negatief saldo. Omdat dit niet toegestaan is, gooien we er weer een foutmelding tegenaan zodat alle wijzigingen teruggedraaid worden. Op deze manier zorgt onze transactie ervoor dat er dus nooit een query zonder de ander uitgevoerd kan worden en dat alles teruggedraaid wordt als er ergens een negatief saldo ontstaat.
Dynamische Websites. Week 6. vrijdag 25 oktober 13
Dynamische Websites Week 6 AGENDA Herhaling Databank SQL Injection Ontwerp OO _ indien private of protected magic zo weinig mogelijk php! View MVC home.php confirm.php vehicledetail.php Controller Model
Nadere informatieEen website maken met databasetoegang.
Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,
Nadere informatieLes 11 : Basis SQL (deel2).
Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit
Nadere informatieLes 15 : updaten van gegevens in de database (deel2).
Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken
Nadere informatieDatabases - Inleiding
Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden
Nadere informatieSparse columns in SQL server 2008
Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG
Nadere informatiePHP en een MySQL database.
mysql_php.doc 1/5 PHP en een MySQL database. Om informatie uit een MySQL database op te halen moet je de volgende stappen uitvoeren: 1. een verbinding maken met mysql; 2. een mysql database selecteren;
Nadere informatie8. Koppeling met een database
PHP7 en MySQL 8. Koppeling met een database 8.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
Nadere informatieDe MySQL C API. Variabelen in C Functies in C Pointers in C
LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat
Nadere informatieKies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site
Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.
Nadere informatieSQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.
SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens
Nadere informatieObject Oriented Programming
Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming
Nadere informatieKoppeling met een database
PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
Nadere informatieAutomatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho.
Automatisering voor Financiële Dienstverleners Werken met Queries en Merge Documenten For more information visit our website at www.pyrrho.com Date: Document Nr: 30 maart, 2007 UBizzMerge, Versie 4.0 Status:
Nadere informatieQuery SQL Boekje. Fredrik Hamer
Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen
Nadere informatieFormulieren maken met Dreamweaver CS 4/CS 5
Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit
Nadere informatieNa bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:
5. De oefendatabase 5.1. Inleiding In de volgende hoofdstukken ga je oefenen / werken met SQL. Om te kunnen oefenen heb je natuurlijk wel een database nodig. In dit hoofdstuk wordt besproken hoe je deze
Nadere informatieEn hoe gaan ze dit allemaal terugvinden?
En hoe gaan ze dit allemaal terugvinden? Taak 1.2.10 Thomas Muller Paul van der Linden MT1A Tutor: van Griensven Docent: van den Biggelaar Gemaakt door Thomas Muller en Paul van der Linden Pagina 1 van
Nadere informatieTechnische nota AbiFire Rapporten maken via ODBC
Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern
Nadere informatie9. MYSQL. Daarin zien we het administratie paneel van mysql.
9. MYSQL We kunnen ook in dit systeem gebruik maken van de gekende ACCESS databanken. Zolang het maar relationale databanjken zijn kunnen we er gebruik van maken. In PHP echter maakt men meestal gebruik
Nadere informatieTaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise
TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van
Nadere informatieIntroductie en even voorstellen
Introductie en even voorstellen Onlangs is PHP5 uitgekomen. PHP5 is een grote stap voorwaards voor iedereen die met deze populaire programmeertaal werkt. In deze presentatie bekijken we de belangrijkste
Nadere informatieNHibernate als ORM oplossing
NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een
Nadere informatieMet een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren
Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen
Nadere informatieA.C. Gijssen. 0.3 PHP en MySQL
PHP en MySQL A.C. Gijssen 0.3 PHP en MySQL PHP en MySQL 0.4 Inhoudsopgave Voorwoord Deel 1 Over PHP 1.1 Inleiding...13 1.2 Wat is PHP?...14 1.3 De geschiedenis van PHP...15 1.4 Editor...16 1.5 PHP en websites...17
Nadere informatieSecure Application Roles
Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam
Nadere informatiePHP & MySQL. Studievaardigheden 2013. Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden
PHP & MySQL Studievaardigheden 2013 Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak een uitgebreide*
Nadere informatieInhoudsopgave. Theorie... 14 Praktijk... 14. Gegevens uit Database halen... 13 DML commando s... 14
SQL 2013 Inhoudsopgave Inhoudsopgave... 2 SQL begrippen... 3 Maken Database... 4 Rechten voor een Database... 4 User aanmaken... 5 Rol Toekennen aan een user... 5 Backup... 6 Theorie... 6 In SQL... 6 SQL
Nadere informatieOpen SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.
Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus
Nadere informatieHandleiding: Whitelabel Customersite
ARGEWEB B.V. Handleiding: Whitelabel Customersite Controlportal.nl Argeweb Support 8-1-2009 Handleiding voor het gebruik maken van de Whitelabel Customersite op controlportal.nl, door Resellers van Argeweb.
Nadere informatieOp de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet.
Het installeren van WordPress Nu je een volledig werkende virtuele server hebt is het tijd om er een applicatie op te installeren. We beginnen met de blogtool WordPress. De database De eerste stap is het
Nadere informatieJavascript oefenblad 1
Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de
Nadere informatieElfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts
Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave
Nadere informatieDomein API Handleiding
Domein API Handleiding Versie 1.6 Datum: 16-07-2014 1 Inhouds opgave 2 Inleiding 3 Result codes 4 Api functies 5 Api helpers 2 Inleiding: De API van 123 Hosting Service kan worden gebruikt om te registreren
Nadere informatieZonnepanelen Hoe krijg je de data op je website?
Zonnepanelen Hoe krijg je de data op je website? Beste website-bezoeker, Omdat ik al heel wat vragen kreeg over het gedeelte zonne-energie op mijn website, heb ik besloten om de werkwijze die ik gevolgd
Nadere informatieLes 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).
Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige
Nadere informatieWe moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.
MySQL talk Trage website? Het optimaliseren van een bestaande website die een MySQL database heeft is niet altijd even makkelijk. Het probleem kan namelijk op veel verschillende plekken zitten: de database
Nadere informatieFoutcontrole met Javascript
Foutcontrole met Javascript Pol Van Dingenen Yannick Van Hauwe INLEIDING Het controleren van de gegevens die ingevuld zijn in formulieren is heel erg belangrijk. In de praktijk is enkel en alleen controle
Nadere informatieThinking of development
Thinking of development Databases Arjan Scherpenisse HKU / Miraclethings Agenda voor vandaag Opdracht tussenstand State diagram / Observer pattern Bret Victor Databases 2/42 Opdracht tussenstand Slides
Nadere informatieCursus PHP & MySQL. Informaticaprojecten. Bachelor Toegepaste Informatica. academiejaar 2008-2009 Jaar 1 Semester 1 & 2.
1 Cursus PHP & MySQL Informaticaprojecten Bachelor Toegepaste Informatica academiejaar 2008-2009 Jaar 1 Semester 1 & 2 Groep D fenex Cursus PHP & MySQL Voorwoord Deze cursus PHP & MySQL werd opgesteld
Nadere informatiePinakes Integrator Client
Pinakes Integrator Client Installatie procedure Pinakes NV Paviljoenstraat 7 1030 Schaarbeek TEL : +32 (0) 2 211 55 95 FAX : +32 (0) 2 211 56.56 INFO@PINAKES.BE WWW.PINAKES.BE 1. Inhoudstafel 1. Inhoudstafel...
Nadere informatiePL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen
PL/SQL PL/SQL is een procedurele uitbreiding op SQL, omdat SQL op zich niet krachtig genoeg is om complexe databank applicaties te ontwikkelen. Server-side functies, of stored procedures worden op de database
Nadere informatieKleine cursus PHP5. Auteur: Raymond Moesker
Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven
Nadere informatieSQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.
BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is
Nadere informatie[TOETS SQL INLEIDING]
2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10
Nadere informatieInstallatie SQL: Server 2008R2
Installatie SQL: Server 2008R2 Download de SQL Server 2008.exe van onze site: www.2work.nl Ga naar het tabblad: Downloads en meld aan met: klant2work en als wachtwoord: xs4customer Let op! Indien u een
Nadere informatieVersieperikelen. Bijlage C
Bijlage C Versieperikelen In dit boek beschrijven we PL/SQL aan de hand van Oracle versie 11g. Alle eigenschappen die in dit boek behandeld worden, zijn in deze versie van Oracle (en in nog te verschijnen
Nadere informatieVoor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com
Welkom bij mijn PHP tutorial (Deel 1) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver
Nadere informatieTinus Plotseling 29-12-2002. MySQL
Tinus Plotseling 29-12-2002 MySQL Inhoudsopgave Inleiding... 3 MySQL Geschiedenis... 3 MySQL Toepassingen... 3 MySQL Voordelen... 4 MySQL Nadelen... 4 MySQL bij ASCI... 4 PostgreSQL... 5 ORACLE... 6 MS
Nadere informatieDBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.
SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases
Nadere informatieMijn eerste ADO.NET applicatie
Hoofdstuk 2 Mijn eerste ADO.NET applicatie ADO staat voor ActiveX Database Objects. Dit is een verzameling klassen die onderdeel uitmaken van het.net framework, waarmee je verbinding kunt maken met een
Nadere informatieDrICTVoip.dll v 2.1 Informatie en handleiding
DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software
Nadere informatie6. Het maken van een database
6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor
Nadere informatieLes 10 : Aanmaken van een database (deel2).
Les 10 : Aanmaken van een database (deel2). Wat is een database? Een centrale opslagruimte voor gegevens. Alle informatie wordt centraal opgeslagen en kan door iedereen geraadpleegd worden. Voordelen van
Nadere informatieFormulieren maken met Dreamweaver CS 4
Formulieren maken met Dreamweaver CS 4 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit zoveel
Nadere informatieInhoudsopgave. versie 0.8
JOOMLA! INSTALLATIE HANDLEIDING versie 0.8 Inhoudsopgave Stappenplan...3 Inrichten database...4 Configuratiecentrum cpanel...4 Aanmaken van een database gebruiker...5 Aanmaken van een database...6 Gebruiker
Nadere informatieEen website ontwerpen in Dreamweaver met de opmaakweergave
Een website ontwerpen in Dreamweaver met de opmaakweergave door G. Van Soest Met Dreamweaver kan je zeer snel een website in elkaar bouwen; ook het onderhoud van een website is met Dreamweaver uiterst
Nadere informatieExcel Controller. Handleiding Excel Controller Wizard
Excel Controller Handleiding Excel Controller Wizard 1 Inhoud Inleiding... 3 Eigen SQL... 3 Stap 1 Eigen SQL... 3 Stap 2 Testen SQL... 8 Stap 3 Wizard... 11 Stap 4 Parameters... 13 Voorbeeld Eigen Parameter...
Nadere informatiePHP & MySQL. Studievaardigheden 2014. Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden
PHP & MySQL Studievaardigheden 2014 Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak
Nadere informatieInformatie & Databases
Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat
Nadere informatieTechnische nota AbiFire5 Rapporten maken via ODBC
Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...
Nadere informatieHandleiding voor het installeren van VBA scripts in Outlook
Handleiding voor het installeren van VBA scripts in Outlook Brondocument E:\OutLook\InstallerenVBAScriptOutlook.odt Versiebeheer Versie Datum Uitleg 1.0v 21-03-12 1e versie na draaien prototype klant 1.1v
Nadere informatieHandleiding conversie SnelStart naar Exact Online
Stap 0: Wat doen we wel/niet Wij converteren alleen financiële data. Optioneel kunnen wij documenten en bijlages van de financiële data mee converteren dit is maatwerk. BTW-grondslagen worden niet geconverteerd,
Nadere informatie1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33
0DD&) QO( l 1 Inleiding 13 De betekenis van PHP 14 Voorkennis 15 Wat dit boek niet biedt 15 PHP 5 - Een routebeschrijving door dit boek 1 5 Zo kunt u de weg vinden 17 Een dankwoord van de auteur 18 Copyright
Nadere informatieCAK Installatiehandleiding
CAK Installatiehandleiding Versie 1.1 Applicatie om centraal de uren van de zorgaanbieders door de gemeente laten aanbieden aan het CAK. Eerst moeten de tabellen, views, packages etc worden aangemaakt.
Nadere informatieTechnisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0
Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin
Nadere informatieAan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.
Doel van deze lesbrief Deze lesbrief is bedoeld om je op de hoogte te brengen van de basisbegrippen die gangbaar zijn bij object georiënteerd programmeren (OOP). In deze lesbrief kom je korte codefragmenten
Nadere informatieLES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting
LES 11: VAN LOKAAL NAAR ONLINE Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting Tijd: 10 minuten Doel: Aan het einde van de les kun je de lokale
Nadere informatieHandleiding OpenCart - factuursturen.nl
Handleiding OpenCart - factuursturen.nl www.webwinkelfacturen.nl Samenvatting Dit is de handleiding voor de koppeling van OpenCart naar Factuursturen.nl. De koppeling zorgt dat voor bestellingen in OpenCart
Nadere informatieEMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen
Inleiding In het boek Databases & SQL wordt beschreven hoe opdrachten in de programmeertaal SQL gebruikt worden om de inhoud van een relationele database te raadplegen en te bewerken. SQL wordt daarbij
Nadere informatie1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting
1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting SQL Server 2008 R2 - Labo 4-1 1.1 Database Mail Configureer database mail zodat e-mail wordt verstuurd met je eigen e-mailadres
Nadere informatieicafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous
icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................
Nadere informatieChris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren
Chris de Kok 223548 TDI 3 Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Inhoud Inleiding... 3 Black box / White box... 3 XP... 3 SimpleTest... 3 Eclipse plugin... 4 GroupTest...
Nadere informatieAutomatische Installatie op IIS server
Automatische Installatie op IIS server In de map Web staat het installatiebestand : Je kan de install starten door het aanklikken van het msi bestand vanuit Verkenner. Na installatie is steeds een manuele
Nadere informatieFormulier maken en opvangen met php
Welkom bij mijn PHP tutorial (Deel 2) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver
Nadere informatieDATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1
DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.
Nadere informatiePuntjes op de I. Baris Firat
Puntjes op de I Baris Firat 1 Functies en kritieke onderdelen in code (onderdelen die niet in één oogopslag te verklaren zijn) zijn voorzien van comments. Hierbij wordt er gebruikt gemaakt van geldende
Nadere informatieTaak 2.1.3 Versleutelen en dan weer terug... 1
Taak 2.1.3 Versleutelen en dan weer terug Inhoud Taak 2.1.3 Versleutelen en dan weer terug... 1 Inhoud... 1 Inleiding... 2 Encryptie en Decryptie... 3 Symmetrisch... 3 Asymmetrisch... 3 Waarom Encryptie
Nadere informatieVerder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.
Objectgeoriënteerd PHP (versie 5) Kennisvereisten: Ervaring met programmeren in PHP met MySQL Je weet wat een class of klasse is Je weet wat een instantie van een klasse (een object) is Je weet wat een
Nadere informatieZelftest Database applicatieprogrammering met JDBC
Zelftest Database applicatieprogrammering met JDBC Document: n1216test.fm 02/04/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST DATABASE
Nadere informatieREST Implementatie. Versie 0.99. ideal
REST Implementatie Versie 0.99 ideal REST Implementatie 2 van 14 Inhoudsopgave REST... 3 DirectoryRequest... 4 StatusRequest... 6 TransactionRequest... 8 ErrorResponse... 10 ReturnURL... 11 CallbackURL...
Nadere informatieKatholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica
Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Labo 4 Beheer van databanken Svenia CLAES (3Ti3) Britt JACOBS (3Ti3) Lies VAN
Nadere informatieNaam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%
Naam project Lost And Found Animals Url Lokaal gehost Groepsleden Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% 1. Beveiliging in de toepassing Naam gebruiker Wachtwoord
Nadere informatieLes 2 Eenvoudige queries
Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten
Nadere informatieHandleiding portal voor invoeren verplichte gegevens voor ANBI s. http://anbi.federatiecultuur.nl
Handleiding portal voor invoeren verplichte gegevens voor ANBI s http://anbi.federatiecultuur.nl 1 Inhoud Introductie... 3 Registreren... 4 Organisatie toevoegen... 6 Organisatie wijzigen... 8 Wachtwoord
Nadere informatieDe Kleine WordPress Handleiding
Introductie Dit is geen uitgebreide handleiding om een WordPress website of blog mee te bouwen. Het is ook geen overzicht van alle aspecten die een WordPress website zo bijzonder maken en geen verhandeling
Nadere informatieDatatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.
Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort
Nadere informatieASRemote WebService. Via deze webservice kunt u:
ASRemote WebService De ASRemote WebService is een SOAP Webservice die softwarematige communicatie met Exact Globe mogelijk maakt vanaf een willekeurige locatie op het internet. Via deze webservice kunt
Nadere informatieFoutafhandeling in SQL
Algemene richtlijnen binnen de mogelijkheden van RDBMS en 4GL Foutafhandeling in SQL Toon Loonen Foutafhandeling van SQL-code is op veel projecten een achtergebleven gebied. Soms is er discussie of het
Nadere informatieFormulieren en waarden posten naar een view
Hoofdstuk 4 Formulieren en waarden posten naar een view Waarden posten naar een view in een Zend-project gaat heel anders dan dat je gewend bent. Om dit mechanisme te leren, kunnen we het beste een eenvoudige
Nadere informatieideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card)
Script: Versie: 0.5 Licentie: ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Gratis te gebruiken door (erkende) goede doelen. 200,00 excl. BTW voor aanschaf
Nadere informatieHandleiding OpenCart - Reeleezee
Handleiding OpenCart - Reeleezee www.webwinkelfacturen.nl Samenvatting Dit is de handleiding voor de koppeling van OpenCart naar Reeleezee. De koppeling zorgt dat voor bestellingen in OpenCart automatisch
Nadere informatieWEBSECURITY INFORMATICA STUDENTENWERKING. Gemaakt door Bryan De Houwer en Yuri Moens
WEBSECURITY INFORMATICA STUDENTENWERKING Gemaakt door Bryan De Houwer en Yuri Moens ISW Informatica studentenwerking voor en door studenten Wat bieden wij aan: Workshops Shell accounts Altijd bereikbaar
Nadere informatieINFITT01 - Internettechnologie WEEK 8
INFITT01 - Internettechnologie WEEK 8 Programma Databases (JDBC, JNDI, ORM, JPA) MVC & Spring/Struts EJB Databases Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de
Nadere informatieHandleiding - Aanmaken van SQL server gebruiker
Handleiding - Aanmaken van SQL server gebruiker Om verbinding te maken met een database die op een SQL Server staat moet in Visionplanner de database worden gekozen, moeten inloggevens voor die database
Nadere informatie9. Het wijzigen van gegevens
9. Het wijzigen van gegevens Voor het wijzigen van gegevens wordt het DML-statement UPDATE gebruikt. Om dit statement correct te kunnen gebruiken moeten enkele zaken bekend zijn: In welke tabel moeten
Nadere informatieHandleiding conversie Exact Globe naar Exact Online
Stap 0: Wat doen we wel/niet Wij converteren alleen financiële data. Optioneel documenten en bijlages van de financiële data. BTW-code grondslagen worden niet geconverteerd, de mutaties worden geboekt
Nadere informatie1. * Database worden vaak gebruikt in Client-Server architectuur.
Naam Studentnummer Klas Herkansing [ ] ja, nee [ ], zoja uit welk jaar? kernbegrippen relationele database Minimaal drie van de vijf vragen goed beantwoorden. 1. * Database worden vaak gebruikt in Client-Server
Nadere informatie