MySQLi

Door , 21 jaar geleden, 32.497x bekeken

Een korte introductie over MySQLi de toekomst van MySQL

Gesponsorde koppelingen

Inhoudsopgave

  1. Inleiding
  2. Eisen aan de server
  3. Verbinden met MySQL server - nieuwe stijl
  4. Een simpele select
  5. Insert, update, delete -- old style
  6. Nu goed, STMT
  7. Verder....

 

Er zijn 33 reacties op 'Mysqli'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
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?


21 jaar geleden
 
0 +1 -0 -1
Je zal je class kunnen aanpassen naar MySQLi je kan dan nog steeds gemakkelijk switchen naar b.v. PostgreSQL. Je zal ook kunnen overwegen om gebruik te maken van PDO.
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
Ik gebruik nu dus een MySQL class, daar kan ik dan ook een MySQLi class voor schrijven, en in die MySQLi class ga ik de ingebouwde MySQLi class gebruiken?

Dan heb je dus een zelf geschreven class met daarin een php class, of zie ik het verkeerd?


21 jaar geleden
 
0 +1 -0 -1
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()
- SanThe -
- SanThe -
21 jaar geleden
 
0 +1 -0 -1
Netjes en interessant. Bedankt.
Happy2day
Happy2day
21 jaar geleden
 
0 +1 -0 -1
Erg goed uitgelegd!
Mooie tut!
Klaasjan Boven
Klaasjan Boven
21 jaar geleden
 
0 +1 -0 -1
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?
Martijn B
Martijn B
21 jaar geleden
 
0 +1 -0 -1
@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.


21 jaar geleden
 
0 +1 -0 -1
Het betreft een verandering in PHP.
Ik zeg dat mysql_* eigenlijk niet meer is veranders sinds PHP3. Hiermee bedoel ik dus de functie collectie en extensie, ik heb het niet over MySQL Server zelf.
MySQLi (en PDO) is in de toekomst de enige manier om query's uit te voeren op de MySQL Server.
- wes  -
- wes -
21 jaar geleden
 
0 +1 -0 -1
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
Legolas
Legolas
21 jaar geleden
 
0 +1 -0 -1
Kleine tip voor mensen omtrend veiligheid, met ingang van MySQLi kan PHP dus ook nieuwe stijl wachtwoordhashes aan (geintroduceerd in MySQL 4.1 geloof ik).
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
wat is het voordeel van prepared statement?
INSERT INTO table kolom1, kolom2 VALUES (waarde1, waarde2), (waarde3, waarde4) lijkt me makkelijker?
Legolas
Legolas
21 jaar geleden
 
0 +1 -0 -1
Dat het in realtime gebeurd, je hoeft dus niet eerst je query opbouwen maar het gaat allemaal sneller door
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
Maar het lijkt me dat het dus gewoon even snel is als een insert met meerdere values. Alleen voor een update query lijkt het me dan wel handig
Legolas
Legolas
21 jaar geleden
 
0 +1 -0 -1
Mr D: dat lijkt jou dan verkeerd want als de connectie loopt knal jij hier de hele tijd wat data er in, voor iets wat elkaar staat. Anders bouw je eerst een grote string op (extra veel geheugen) gaat daarna connectie opbouwen en daarna query'en. Er van uitgaande dat je niet pconnect.
K i p
K i p
21 jaar geleden
 
0 +1 -0 -1
Ik zie dat majeskuuhellie ook wel zitten. Ik ga me er in verdiepen. Bedankt webbie!
Joeri
Joeri
21 jaar geleden
 
0 +1 -0 -1
wat een opperbeste tutorial, heb het onmiddelijk toegepast op een deel van mijn scripts vooral STMT is zeer handig, mooi uitgelegd en mijn host staat blijkbaar goed ingesteld dus THX.
Kalle P
Kalle P
21 jaar geleden
 
0 +1 -0 -1
Ik heb geen zin om het uit te zoeken, dus daarom vraag ik het ff.

Worden net als in Java de speciale karakters (",', ;, etc) omgezet in de prepared statements. Dat dus mysql real escape string en die andere bla niet meer nodig is.
Bo az
Bo az
21 jaar geleden
 
0 +1 -0 -1
@Kalle:

Opmerking op pagina 6 onderaan:
Webmakerij:
Opmerking Nee ik gebruik geen real_escape_string. Goed he, dat doet execute automatisch toepassen voor je.


Ja dus.
Kalle P
Kalle P
21 jaar geleden
 
0 +1 -0 -1
Dankje voor het uitzoeken. Scheelt weer zo'n nutteloze tut lezen...
David
David
21 jaar geleden
 
0 +1 -0 -1
Als mysqli is geactiveerd werkt dan de functies met mysql nog wel? Zoals mysql_connect() bijvoorbeeld.
- wes  -
- wes -
21 jaar geleden
 
0 +1 -0 -1
ja, dit kan naast elkaar lopen.

Waar je wel op moet letten is dat je het niet door elkaar gaat gebruiken. Dus bijv een mysql_connect met een mysqli_fetch_array etc. Tis het een oft ander
Jordi
Jordi
21 jaar geleden
 
0 +1 -0 -1
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...


21 jaar geleden
 
0 +1 -0 -1
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.
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
de toekomst is volgens mij gewoon PDO
Jordi
Jordi
21 jaar geleden
 
0 +1 -0 -1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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("...");
}

?>
Martijn Wieringa
Martijn Wieringa
21 jaar geleden
 
0 +1 -0 -1
Heb je toevallig nog bekeken of er veel verschil zit; OOP vs procedure (proceduriaal??) kwa performance?


21 jaar geleden
 
0 +1 -0 -1
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.
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
prepared statements zijn volgens dat artikel dus duidelijk langzamer, terwijl dit juist sneller zou moeten zijn
Jan Slembrouck
Jan Slembrouck
21 jaar geleden
 
0 +1 -0 -1
Ben nieuweling in PHP. Heb netjes alles ge?nstalleerd. Werkt niet, zelfs simpele code als "echo". Iets essentieels vergeten?
Leroy Boerefijn
Leroy Boerefijn
21 jaar geleden
 
0 +1 -0 -1
@jan, open ff een nieuw topic in het forum.. (ga naar het forum en dan naar php en dan op nieuw topic klikken) ;)
Vincent
Vincent
20 jaar geleden
 
0 +1 -0 -1
Goeie tut! Veel aan gehad :-)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Victor perez
victor perez
20 jaar geleden
 
0 +1 -0 -1
@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

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Inleiding
  2. Eisen aan de server
  3. Verbinden met MySQL server - nieuwe stijl
  4. Een simpele select
  5. Insert, update, delete -- old style
  6. Nu goed, STMT
  7. Verder....

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

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.