MySQLi
Een korte introductie over MySQLi de toekomst van MySQL
Gesponsorde koppelingen
Inhoudsopgave
- Inleiding
- Eisen aan de server
- Verbinden met MySQL server - nieuwe stijl
- Een simpele select
- Insert, update, delete -- old style
- Nu goed, STMT
- Verder....
33 reacties op 'MySQLi'
Gesponsorde koppelingen
Erg, erg netjes Webmakerij!
Je hebt mij nu iig aan de MySQLi gezet ;-)
Echter:
Ik gebruik nu een zelf geschreven OOP class voor MySQL, maar in MySQLi zit dus al een standaard Class. Het werkt heerlijk natuurlijk, maar dat betekent dus dat ik niet zo gemakkelijk tussen MySQLi en PostgreSQL kan switchen, of zit dat anders?
Je hebt mij nu iig aan de MySQLi gezet ;-)
Echter:
Ik gebruik nu een zelf geschreven OOP class voor MySQL, maar in MySQLi zit dus al een standaard Class. Het werkt heerlijk natuurlijk, maar dat betekent dus dat ik niet zo gemakkelijk tussen MySQLi en PostgreSQL kan switchen, of zit dat anders?
Meestal schrijf je zelf een db class met als voordeel dat je alleen de class hoeft aan te pasen als je veranderd van database.
De benadering van je object is dan hetzelfde ongeact de achterligende database.
Als je nu de class herschrijft dan kan je hier kiezen of je functie stijl MySQLi doet of via de mysqli class dat maakt niet uit. Het gaat er in jouw geval om dat je je database class aanpast. Dat kan idd betekenen dat je php-class in een class hebt (heb ik hier zelf ook).
Meestal doe je dan in je constructor $this->mysqli = new mysqli en vanuit je methodes doe je dan $this->mysqli->query()
De benadering van je object is dan hetzelfde ongeact de achterligende database.
Als je nu de class herschrijft dan kan je hier kiezen of je functie stijl MySQLi doet of via de mysqli class dat maakt niet uit. Het gaat er in jouw geval om dat je je database class aanpast. Dat kan idd betekenen dat je php-class in een class hebt (heb ik hier zelf ook).
Meestal doe je dan in je constructor $this->mysqli = new mysqli en vanuit je methodes doe je dan $this->mysqli->query()
Ik zie je trouwens geen MYSQL of MYSQLi dingen deon. Is het nu een verandering in PHP of een in MYSQL. Ik neem aan php?
Tevens geef je aan dat de code van mysql sinds php3 nauwelijks meer is gewijzigd. Dit ben ik niet met je eens. Eigenlijk denk ik gewoon dat je php en mysql door elkaar haalyt.
Mysqli zal wel de nieuwe PHP functie zijn om mysql aan te roepen? Of snap ikhet nou niet?
Tevens geef je aan dat de code van mysql sinds php3 nauwelijks meer is gewijzigd. Dit ben ik niet met je eens. Eigenlijk denk ik gewoon dat je php en mysql door elkaar haalyt.
Mysqli zal wel de nieuwe PHP functie zijn om mysql aan te roepen? Of snap ikhet nou niet?
@Klaasjan Boven:
Volgens mij hebben we het hier steeds over een extensie in PHP de mysql en mysqli extensie. MySQL (database) is zowel een cli?nt als een server.
Beide PHP extensies maken gebruik dan deze MySQL cli?nt. De ontwikkelaars van PHP hebben de mysql extensie verbeterd en een mysqli extensie gemaakt.
Ik hoop dat je het nu beter snapt.
edit:
De MySQL cli?nt is gewoon een bibliotheek(verzameling functies) met een API (Application Programmers Interface) . Beide PHP extensies (mysql/mysqli) maken hier gewoon gebruik van.
Volgens mij hebben we het hier steeds over een extensie in PHP de mysql en mysqli extensie. MySQL (database) is zowel een cli?nt als een server.
Beide PHP extensies maken gebruik dan deze MySQL cli?nt. De ontwikkelaars van PHP hebben de mysql extensie verbeterd en een mysqli extensie gemaakt.
Ik hoop dat je het nu beter snapt.
edit:
De MySQL cli?nt is gewoon een bibliotheek(verzameling functies) met een API (Application Programmers Interface) . Beide PHP extensies (mysql/mysqli) maken hier gewoon gebruik van.
jaaaaaaaaa een mede mysqli gebruiker!! :))
Wat je niet moet vergeten en waar je geheid overheen gaat kijken, is als je meerdere connecties gebruikt, geen OOP, dat je de connection VOOOOOOR je sql string zet.
oude stijl:
$sql = 'SELECT etc';
$res = mysql_query($sql,$link);
nieuw:
$sql = 'SELECT etc';
$res = mysqli_query($link,$sql);
Ditzelfde gaat op voor mysql_select_db, mocht je die nog gebruiken
Wat je niet moet vergeten en waar je geheid overheen gaat kijken, is als je meerdere connecties gebruikt, geen OOP, dat je de connection VOOOOOOR je sql string zet.
oude stijl:
$sql = 'SELECT etc';
$res = mysql_query($sql,$link);
nieuw:
$sql = 'SELECT etc';
$res = mysqli_query($link,$sql);
Ditzelfde gaat op voor mysql_select_db, mocht je die nog gebruiken
Voor een project dat ik onlangs heb gedaan heb ik even overwogen om mysqli te gebruiken, maar ik heb besloten om het niet te doen, omdat ik niet helemaal in zie wat er beter aan is (behalve dat het in de toekomst gebruikt gaat worden om de ??n of andere reden) en omdat je dan overal die connectie-variabele moet gebruiken.
Vooral dat laatste liet me besluiten om het niet te doen, want met mysql kun je gewoon ??n keer een connectie maken en dan maken al je functies daar automatisch gebruik van. Met mysqli zou ik volgens mij overal die connectie-var globaal moeten gaan declareren of aan functies meegeven etc. Ik vroeg me af hoe andere mensen hier tegenaan kijken of hoe ze dit oplossen...
Vooral dat laatste liet me besluiten om het niet te doen, want met mysql kun je gewoon ??n keer een connectie maken en dan maken al je functies daar automatisch gebruik van. Met mysqli zou ik volgens mij overal die connectie-var globaal moeten gaan declareren of aan functies meegeven etc. Ik vroeg me af hoe andere mensen hier tegenaan kijken of hoe ze dit oplossen...
Voordeel van mysqli zijn:
- nieuwer, sneller
- betere ondersteuning voor meerdere verbindingen (vandaar ook dat je de verbindingssources mee moet geven tenzij je gaat voor oop)
- alleen mysql vereist bij mijn weten - als enige - geen verbindingssources
- OOP
- STMT mogelijkheid
Laat je niet tegenhouden door die paar extra tekens die je moet typen.
Je kan idd de verbingssources globaal maken. Je kan ook heel anders programmeren.
Ik wens je veel plezier met het PHP 6 compatable maken tegen die tijd.
- nieuwer, sneller
- betere ondersteuning voor meerdere verbindingen (vandaar ook dat je de verbindingssources mee moet geven tenzij je gaat voor oop)
- alleen mysql vereist bij mijn weten - als enige - geen verbindingssources
- OOP
- STMT mogelijkheid
Laat je niet tegenhouden door die paar extra tekens die je moet typen.
Je kan idd de verbingssources globaal maken. Je kan ook heel anders programmeren.
Ik wens je veel plezier met het PHP 6 compatable maken tegen die tijd.
Nou ja, ok, er zijn dus voordelen aan mysqli. Maar typen jullie echt allemaal steeds die "paar extra tekens"? Ik weet wel dat het er niet veel zijn, maar ik vind het toch vervelend en het is weer een extra iets waar je je (een beetje) zorgen over moet maken (of over na moet denken) en iets wat eventueel fout kan gaan. Bovendien hou ik mijn functies voor de overzichtelijkheid het liefst zo kort mogelijk en wil ik om dezelfde reden het liefst ook zo weinig mogelijk parameters bij zo'n functie.
Begrijp me niet verkeerd, ik ga in de toekomt waarschijnlijk gewoon mysqli gebruiken, maar ik vroeg me eigenlijk juist af of er geen 'mooiere' methodes waren om ermee te werken dan de onderstaande:
Begrijp me niet verkeerd, ik ga in de toekomt waarschijnlijk gewoon mysqli gebruiken, maar ik vroeg me eigenlijk juist af of er geen 'mooiere' methodes waren om ermee te werken dan de onderstaande:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
function foo ($arg1, $arg2) {
global $mysqli;
$mysqli->query("...");
}
// en
function foo ($arg1, $arg2, mysqli $mysqli) { // of heet de klasse geen mysqli?
$mysqli->query("...");
}
?>
function foo ($arg1, $arg2) {
global $mysqli;
$mysqli->query("...");
}
// en
function foo ($arg1, $arg2, mysqli $mysqli) { // of heet de klasse geen mysqli?
$mysqli->query("...");
}
?>
Ik niet. Maar een beetje Google werk levert de vergelijking mysql, mysqli, pdo (http://dealnews.com/developers/php-mysql.html)
PDO is langzamer. De losse extensies hebben als voordeel dat ze zich helemaal op een database richten. PDO kan alleen dingen aanbieden die door alle databases wordt ondersteund. Daarbij komt dat hoe vervelend ook niet alle databases exact dezelfde SQL-syntax en mogelijkheden ondersteunen.
PDO is langzamer. De losse extensies hebben als voordeel dat ze zich helemaal op een database richten. PDO kan alleen dingen aanbieden die door alle databases wordt ondersteund. Daarbij komt dat hoe vervelend ook niet alle databases exact dezelfde SQL-syntax en mogelijkheden ondersteunen.
@Webmakerij
Even een opmerking op de vergelijking mysql, mysqli, pdo, ik heb het artikel ook gelezen (http://dealnews.com/developers/php-mysql.html)
Maar had er geen vertrouwen in zelf eventjes een test geschreven hier de uitslag ( tijd in sec. )
MySQL insert 10000
---
InnoDB: 4,715536
MyISAM:1,396578
PDO insert 10000
---
InnoDB: 0,671610
MyISAM:0,686064
PDO insert (prepare) 10000
---
InnoDB: 0,632937
MyISAM:0,642169
MySQLi insert 10000
---
InnoDB: 4,151051
MyISAM:1,490064
MySQLi insert (prepare) 10000
---
InnoDB: 3,457850
MyISAM:1,187420
Even een opmerking op de vergelijking mysql, mysqli, pdo, ik heb het artikel ook gelezen (http://dealnews.com/developers/php-mysql.html)
Maar had er geen vertrouwen in zelf eventjes een test geschreven hier de uitslag ( tijd in sec. )
MySQL insert 10000
---
InnoDB: 4,715536
MyISAM:1,396578
PDO insert 10000
---
InnoDB: 0,671610
MyISAM:0,686064
PDO insert (prepare) 10000
---
InnoDB: 0,632937
MyISAM:0,642169
MySQLi insert 10000
---
InnoDB: 4,151051
MyISAM:1,490064
MySQLi insert (prepare) 10000
---
InnoDB: 3,457850
MyISAM:1,187420
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details

- 6 jaar geleden
- 4.495 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP tutorials opties
- Overig
- Nieuwste PHP tutorials
- PHP tutorial toevoegen


PHP hulp
0 seconden vanaf nu