extends MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Ervaren Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als ervaren developer zul je hiernaast ook andere developers assisteren en waar nodig de leiding nemen in het project.

Bekijk vacature »

3D BIM Add-on Developer

As a 3D BIM add- on developer at KUBUS, you will develop add-ons (called BCF- Managers) to the leading building information modeling (BIM) programs Revit, Navisworks, Archicad, AutoCAD and Tekla Structures. BCF Managers enable data transfer between BIM software and BIMcollab. You will work on both the front- and the back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual

Bekijk vacature »

Full stack Javascript ontwikkelaar

Functie Benieuwd hoe jouw dag eruit ziet? Je komt binnen rond een uur of 10 en dat start je met de morning call. Dit doen we vanaf het hoofdkantoor of op het lab, ligt eraan welk project je mee bezig bent. Na de call en het verdelen van de tickets ga je met je team aan de slag. Rond een uur of 12 is er een goede lunch en ga je smiddags weer lekker door met je werk. De ene keer maak jij een game voor een groot merk om de interactie tussen product en eindgebruiker te vergroten. De andere

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

Software Developer

Functie omschrijving Veel begeleiding en de kans om je verder te ontwikkelen als software developer. Dat kunnen wij jou bieden bij deelname aan deze leuke traineeship. Je krijgt een mentor toegewezen die jou alle kneepjes van het vak leert. Heb jij al wat ervaring als software developer? Daar worden wij heel blij van! Lees snel verder! Bedrijfsprofiel Als software developer neem je deel aan een trainings programma in de omgeving van Haarlem waar je persoonlijk wordt begeleidt, zodat je alle kneepjes van het vak leert. Aan de hand van jouw kennis en ervaring krijg je een persoonlijk opleidingstraject. Je gaat

Bekijk vacature »

Lead C++ Developer

De rol van Lead C++ Developer Als Lead C++ developer bij KUBUS word je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de desktop applicaties van BIMcollab, ons platform voor 3D model-validatie en issue-management bedoeld om de kwaliteit van 3D design-modellen voor gebouwen te verbeteren. Betere 3D modellen leiden tot betere gebouwen, dus zo draag je bij aan verduurzaming van de gebouwde omgeving met slimmer gebruik van materialen, minder verspilling en energie-efficiënte gebouwen. Een goede gebruikerservaring staat bij ons hoog in het vaandel; we gaan in onze ontwikkeling voor innovatie en kwaliteit. In je rol als

Bekijk vacature »

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

C# .NET Developer

Dit ga je doen Je richt je op het doorontwikkelen en herstructureren van het platform; Je werkt in teamverband en zelfstandig aan uitdagende projecten voor verschillende klanten; Softwareontwikkeling middels C# .NET; Je staat in contact met verschillende opdrachtgevers om de klantwensen te bespreken en deze vervolgens te ontwikkelen; Verbeteren van bedrijfsprocessen; Implementaties. Hier ga je werken Als .NET Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Junior / Medior C# .NET ontwikkelaar in Brabants t

Bedrijfsomschrijving Ben jij een gepassioneerde C# .NET ontwikkelaar met een voorliefde voor hardware? Dan is dit de perfecte kans voor jou! Bij ons bedrijf krijg je de kans om deel uit te maken van een team van sociale en enthousiaste techneuten die er elke dag naar streven om onze eigen ontwikkelde software nog beter te maken. Het team van ongeveer 10 team medewerkers maakt zich hard om de interne processen gestroomlijnd te laten verlopen. Functieomschrijving Als lid van ons hechte en behulpzame team word je betrokken bij diverse projecten. Daarbij krijg je te maken met data-analyses, content en de logistieke

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »
Unthinking majority

unthinking majority

07/01/2015 22:41:20
Quote Anchor link
Beste mensen,

Ik vraag me af wat de beste manier is om
een MySQL class te gebruiken.
Vaak extend ik een class met een MySQL class waarbij meerdere tellers en MySQL functies in zitten.
Graag zou ik willen weten of het wel de goede manier is om
MySQl te gebruiken.
En hoe dat zit met de stack en de heap.

voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
class Voorbeeld extends MySQL{

$this->voeruit("use `php` ");

}

?>


Alvast bedankt.
Gewijzigd op 07/01/2015 22:58:01 door Unthinking majority
 
PHP hulp

PHP hulp

07/05/2024 17:56:38
 
Ward van der Put
Moderator

Ward van der Put

08/01/2015 07:59:09
Quote Anchor link
Je kunt sowieso beter overstappen op MySQLi:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
class Database extends \MySQLi
{

}

?>
 
Ivo P

Ivo P

08/01/2015 09:34:56
Quote Anchor link
een database class, die dus iets doet met databases, kan inderdaad mysql(i) extenden.

het is alleen niet de bedoeling om bijvoorbeeld een user class te laten extenden op mysql

als je in de user class een database connectie nodig hebt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

class user
{
    protected $db;

    function
__construct()
    {

         $this->db = new \MYSQLi();
    }
}


?>
 
Unthinking majority

unthinking majority

08/01/2015 12:55:05
Quote Anchor link
Okeey.
Allemaal bedankt voor de snelle reacties.
Dan denk ik MySQLi toch per class apart te gaan gebruiken.
Dat zal met het sluiten van MySQL ook beter gaan.

Wat ik nu nog heb is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->mysqli = new mysqli("host", "username", "password", "databasenaam");
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class Profiel extends MySQL{

public function __construct(){
    $this->run("use `php`");
   }
}

?>


Ik begrijp nu dat dit niet de bedoeling is.

Mijn MySQL class wat ik nu nog heb ziet er ongeveer zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php

class MySQL{

private $row;
private $result;
private $mysqli;
protected $teller;
protected $array;

public function __destruct() {$this->mysqli->close();}

protected function run($query){

include ("verbindmysqlinclass.php");

$sql =
<<<SQL

$query
    
SQL
;
$this->result = $this->mysqli->query($sql);
if (!$this->result){
    die("Er is iets fout gegaan bij het uitvoeren van de query ". $this->mysqli->error);
    
}

else{ if (is_object($this->result)){
    $this->teller = $this->result->num_rows;
}

else{
    $this->teller = 0;
}
}

}


protected function escapestringetje($naampje){

include ("verbindmysqlinclass.php");

$naampje = $this->mysqli->real_escape_string($naampje);
return $naampje;

}


protected function geef($array){


$hoeveelheid = count($array);                                      //tel de inhoud van de array

for($i = 0; $i < $hoeveelheid; $i++) {                           //for loopje
        
        $this->{"$array[$i]"} = array();                        //maak een variabele aan die de naam heeft van de inkomende array
                                                                //van die variabele wordt ook meteen een array gemaakt.

    }                                                            

    
while ($this->row = $this->result->fetch_array()) {               //het resultaat van de query array wordt in $this->row gezet {
                                                                //$this-row wordt dus doorlooped totdat die helemaal gevult is tot het einde

    for($i = 0; $i < $hoeveelheid; $i++) {                         // een for loopje
        array_push($this->{"$array[$i]"}, $this->row[$i]);        // hier wordt de inkomende naam tegelijkertijd gevuld met de waardes van de mysql row
    }
}



$this->result->free();
}
}


?>


Maar ik begrijp nu ook dat het mogelijk is om MySQLi rechstreeks te extenden.
Gewijzigd op 08/01/2015 12:55:28 door unthinking majority
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/01/2015 15:45:39
Quote Anchor link
Ik zou gewoon direct op PDO overgaan. PDO biedt de kans om later over te stappen op een andere database als mysql en het heeft alle zaken gewoon goed geregeld zoals De foutmeldingen (Exceptions).
Gewijzigd op 08/01/2015 15:46:49 door Frank Nietbelangrijk
 
Unthinking majority

unthinking majority

08/01/2015 19:28:01
Quote Anchor link
Dat ga ik proberen.
Iedereen erg bedankt voor de mogelijkheden.
 
Bart V B

Bart V B

08/01/2015 19:51:25
Quote Anchor link
Um... Ivo legt je iets belangrijks uit...
Ivo P op 08/01/2015 09:34:56:
een database class, die dus iets doet met databases, kan inderdaad mysql(i) extenden.

het is alleen niet de bedoeling om bijvoorbeeld een user class te laten extenden op mysql

als je in de user class een database connectie nodig hebt:

Probeer dit in gedachte te houden.
Want ik zie nu dat je dit eigenlijk niet doet.
Het kan wel, maar een extend is een uitbreiding op.
Heeft een profiel een relatie met een database?
Het antwoord is nee. Want je hebt alleen een database nodig om gegevens van een profiel te laden dus extenden op een database is niet nodig.
In jou geval zou het dus iets moeten worden als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

class profiel
{
   protected $db;

   public function __construct()
   {

      $this->db = new MySQL;
   }
}

?>


In je class MySQL kan je wel extenden. Want daar is een connectie met mysqli wel nodig dus is wel een uitbreiding op.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

class MySQL extends \MySQLi
{
   // hier wat leuke dingen..

}
?>

Quote:
Dat zal met het sluiten van MySQL ook beter gaan.

Je weet dat het niet perse nodig is om de database connectie te sluiten?
Dit gebeurt automagisch aan het einde van het script.
Mits dat je gebruik maakt van een persistent connection.. Dan heb je dat probleem.
 
Unthinking majority

unthinking majority

09/01/2015 15:44:15
Quote Anchor link
Wat Ward en Ivo hebben uitgelegd is inderdaad goed om te weten.
De reactie daarna is een beetje misleidend want dat was wat ik toen nog had en nog niet met verbeteringen.
PDO lijkt mij ook een goede manier.
Wegens de MySQL hackers in de media en overbelasting lijkt mij het wel beter om de database connecties te sluiten terwijl het voor de werking niet nodig is.
Een profiel heeft inderdaad niet direct een relatie met MySQL en daar ga ik mijn script op verbeteren.
Bedankt voor de extra uitleg met voorbeelden.
 
Ozzie PHP

Ozzie PHP

09/01/2015 16:01:22
Quote Anchor link
>> Wegens de MySQL hackers in de media en overbelasting lijkt mij het wel beter om de database connecties te sluiten terwijl het voor de werking niet nodig is.

Dit zijn ongegronde argumenten, en bovendien is het slecht voor je performance om telkens verbindingen te openen en sluiten. Gewoon niet sluiten. Dat regelt PHP allemaal zelf.
 
Bart V B

Bart V B

09/01/2015 16:31:21
Quote Anchor link
Over welke "overbelasting" heb je het?
Wat en hoe heb je gemeten?
Welk stuk is traag?

Indien dat allemaal (nog) niet van toepassing is is er geen probleem. :)

Het is het zelfde als de denkwijze waarin je je script gaat verbeteren.
Als de verbinding niet nodig is, dan gebruik je het ook niet.

Een ander argument is om dit php zelf te laten regelen is dat als je je per ongeluk de verbinding te vroeg sluit je applicatie om zeep is. En dat kan uuuuuuuuuuuuren debuggen worden waarom het niet werkt.
Gewijzigd op 09/01/2015 16:33:10 door Bart V B
 
Unthinking majority

unthinking majority

09/01/2015 18:45:51
Quote Anchor link
Op php.net las ik dit:

http://us.php.net/manual/en/mysqli.close.php
Quote:
Open connections (and similar resources) are automatically destroyed at the end of script execution. However, you should still close or free all connections, result sets and statement handles as soon as they are no longer required. This will help return resources to PHP and MySQL faster.


Daarom dacht ik dat het sluiten beter was.
Over de MySQL hacken dacht ik meer aan de media en het lijkt mij dat je er alleen binnen kan komen als het deurtje open staat of als die te makkelijk open te duwen is.

Ik begrijp niet welk script hiermee bedoeld wordt.
PHP of de MySQL query.

Toevoeging op 09/01/2015 19:06:05:

Het stuk op devzone.zend.com heb ik gevonden.

http://devzone.zend.com/239/ext-mysqli-part-i_overview-and-prepared-statements/

Er staat dat er verschil zit tussen de oude en de nieuwe versie.
 
Bart V B

Bart V B

09/01/2015 19:29:06
Quote Anchor link
Die quote komt van een user.
Dat is niet wat de manual voor schrijft.
De manual zegt alleen dat het een vorige connectie sluit meer niet.

Hoewel de meeste user comments goede tips bevatten is deze van 6 jaar geleden.
Het kan natuurlijk zijn dat de user een berg connecties naar de database maakt waardoor het allemaal erg traag werd, en ja dan is het logisch dat je de close functie gebruikt om de VORIGE connectie te sluiten.

Het openen en sluiten van een database connectie heeft iets van doen met veiligheid.
Je kan zowel met een verkeerd php script, dan wel met een verkeerde (onveilige) query je site hackbaar maken. Ik kan legio aan voorbeelden schrijven hoe het onveilig zou kunnen worden, maar dat doe ik niet. :)

Beter is om je tips te geven om het veilig te maken.

Dwing in je php code af wat verwacht word.
Dus als jij een invoerveld hebt wat verwacht dat alleen nummers bevat dan moet je daarop controleren.
Een string een minimale en maximale lengte geven bijvoorbeeld.
Verwacht je geen tags in je invoer verwijder ze, of controleer er op en geef een foutmelding.

PHP heeft tegenwoordig een filter_var() functie, dat maakt het leven al een stuk aangenamer.
(http://php.net/manual/en/function.filter-var.php)

Als alles klopt wat je verwacht, dan zet je het pas in de database.
Zowel PDO als mysqli hebben de prepared statement functies aan boord.
Die zorgen er voor dat je inhoud correct een veilig in de database komen.

En dan moet het op server nivo ook allemaal nog goed geregeld zijn, maar dat is voor dit topic ietsje te veel van het goede. ;)
EDIT
Ik zie net dat je hebt zitten editen in je post..
Dat artikel is van March 16, 2004.. Dat is van toen ik nog haar op mijn hoofd had.
Dus als jij met een versie werkt die uit die tijd stamt dan word het tijd om eens wat te updaten. Dat is allemaal niet meer relevant.
Overigens is het wel zo dat mysql_connect niet meer werkt in de nieuwste versie, daarom word hier vaak het advies gegeven om over te stappen naar mysqli of PDO.
PDO is leuk als je bijvoorbeeld een zou willen overstappen naar een andere database.
Bijvoorbbeeld SQLite, of postgres.
Gewijzigd op 09/01/2015 19:40:19 door Bart V B
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/01/2015 20:20:39
Quote Anchor link
Goed verhaal Bart.
Ik wel er wel even iets aan toevoegen.

Prepared statements worden op de een af andere manier heilig beschouwd in de PHP wereld.
Dat zijn ze niet en in veel gevallen volkomen overbodig. Het is namelijk zo dat zowel MySQli als PDO eerst een querie naar de db-server stuurt, die wordt geëvalueerd en er wordt een query plan aan gehangen. Dan krijgt de client een pointer naar terug waarna met behulp van die pointer de query telkens uitgevoerd met de verschillende parameters.
Bij eenmalige query's kan je het binden van die parameters net zo goed oplossen met een escape of type casting.
Gewijzigd op 09/01/2015 20:29:04 door Ger van Steenderen
 
Unthinking majority

unthinking majority

09/01/2015 20:30:18
Quote Anchor link
Bedankt voor de goede tips.

Quote:
Ik zie net dat je hebt zitten editen in je post..

Het was een toevoeging of aanvulling op het bericht.

Voor de veiligheid doe ik alles in combinatie met regular expressions.
Mijn laptop is laatst stuk gegaan en ik gebruik nu versie: 5.6.21
Ik ga proberen over te stappen op PDO maar ben daar nog over aan het lezen.
Wat ik me afvraag bij PDO is of daar ook een real_escape_string in zit en of dat nog nodig is.
De prepared statements zitten er inderdaad wel in maar ik vraag me af of dit een goede vervanger is van de real_escape_string.

Toevoeging op 09/01/2015 20:35:17:

En het antwoord zat in het bericht hiervoor die ik nog niet gelezen had.
Bedankt voor de tips.
 
Bart V B

Bart V B

09/01/2015 21:13:20
Quote Anchor link
@Ger, Dank doe mijn best. :)
Dat is een hele goede toevoeging. Want type casting en of escape is natuurlijk ook heel goed mogelijk.
De uitleg heb ik mijzelf eigenlijk nooit in verdiept hoe het prepared statement ding eigenlijk zijn werk doet. Dus ben eigenlijk wel heel blij dat je het even opmerkt hoe dat ding eigenlijk onder water werkt.
Dank daarvoor.

Quote:
Mijn laptop is laatst stuk gegaan en ik gebruik nu versie: 5.6.21

Bedoel je php of mysql?
Quote:
Voor de veiligheid doe ik alles in combinatie met regular expressions.

Poeh.. jij liever dan ik :)
Iets met een allergie voor regular expressions..
Quote:
De prepared statements zitten er inderdaad wel in maar ik vraag me af of dit een goede vervanger is van de real_escape_string.

PDO heeft ook een escape_string optie hoor. :)
http://php.net/manual/en/pdo.quote.php
 
Unthinking majority

unthinking majority

09/01/2015 22:26:21
Quote Anchor link
Ik bedoelde de MySQL server versie.

Via http://www.regex101.com
Kun je regular expressies testen wat het 1000 x makkelijker maakt vind ik persoonlijk.
Handig dat de escape string er ook in zit. Bedankt.
 
Ward van der Put
Moderator

Ward van der Put

10/01/2015 11:36:18
Quote Anchor link
Toch nog even een waarschuwing bij dit eerdere voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class profiel
{
   protected $db;

   public function __construct()
   {

      $this->db = new MySQL;
   }
}

?>


De klasse zelf opent hier een databaseverbinding en plaats van een elders geopende database te hergebruiken. Gevolg daarvan kan een bekend performance-probleem veroorzaken: 45 queries uitvoeren via 45 databaseverbindingen voor één enkele webpagina.

In dat geval kán het vroegtijdig sluiten van de verbindingen helpen, al is een ander OOP-ontwerp maken natuurlijk beter.
 
Ivo P

Ivo P

10/01/2015 13:22:15
Quote Anchor link
deels is dit waar:

het is overzichtelijker als je $this->db = db::getDbVerbinding(); oid gebruikt.

Maar als je via php meerdere connecties met dezelfde inloggegevens gebruikt, wordt de bestaande verbinding opnieuw gebruikt en krijg je dus niet 10 exact dezelfde verbindingen.

Wel is het een beetje eng, wat hierboven gedaan wordt: bij het destructen van een object wordt de verbinding gesloten.
Maar het zou een beetje jammer zijn als het destructen van een object zou zorgen dat alle andere objecten ineens geen db-verbinding meer hebben.
 
Unthinking majority

unthinking majority

11/01/2015 19:27:33
Quote Anchor link
Sorry voor mijn late reactie.
Bedankt voor de waarschuwing en uitleg.
Wat ik nu van plan ben om te doen is ongeveer dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
include_once "Statisch.class.php";

class Profiel{
private $host;
private $database;
private $username;
private $password;

    public function __construct(){
        $this->host = Statisch::getHost();
        $this->database = Statisch::getDb();
        $this->username = Statisch::getUser();
        $this->password = Statisch::getDb();
        
        try
        {
        $this->db = new PDO("mysql:host=". $this->host .";dbname=". $this->database ."",$this->username, $this->password);
        }

        catch(PDOException $e)
        {

            echo '<pre>';
            echo 'Regelnummer: '.$e->getLine().'<br>';
            echo 'Bestand: '.$e->getFile().'<br>';
            echo 'Foutmelding: '.$e->getMessage().'<br>';
            echo '</pre>';
        }
    }
}


$object = new Profiel();
?>


Quote:
Maar het zou een beetje jammer zijn als het destructen van een object zou zorgen dat alle andere objecten ineens geen db-verbinding meer hebben.


Daarbij vraag ik me af hoe dat zit tussen de stack en de heap.

Wat ik tussen stack en heap begrijp is dat het bij $object pas in de heap terecht komt.
Maar ik begrijp dan nog niet of dan ook alles in de heap komt inclusief de include_once "Statisch.class.php";
of als er een object extends wordt met een andere class en of die dan ook meteen in de heap terecht komt.
Gewijzigd op 11/01/2015 19:31:54 door unthinking majority
 



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.