Databases connectie enzo
Ik weet dat dit al een oud onderwerp is maar ik vind het een leuk onderwerp om over te praten en aan de beginnende php'ers hebben er ook wat aan xd...
Ik weet dat er waarscheinlijk nog een aantal van jullie zijn die nog de database afhandelingen en connectie erheen mysql_query() / mysql gebruiken.
Alhoewel de mysql_* nog wel te gebruiken is dadelijk in php6 en nu in php5 het niet meer echt aanteraden is...
Dus nu is mijn vraag wat gebruiken jullie hier allenmaal? (mysqli, PDO, database class, framework, enze...)
Wat zijn jullie ervaringen ermee ? (goed/slecht/kan beter)
Waar kan je welke beter wel of dan wel niet voor gebruiken ?
Ik gebruik PDO, MySQL en Smarty. Ben tevreden met hoe het werkt en wat het kan. Maar ik heb nog niet al te veel ervaring en ben mijn vaardigheden telkens nog aan het verbeteren.
*bumbje*
Reactie verwijderd. Wanneer iemand de behoefte heeft om te praten over een bepaald onderwerp om daar meer van te leren is dit toegestaan.
[/modedit]
Toevoeging op 14/09/2011 18:50:11:
Marco PHPJunkie op 12/09/2011 17:49:10:
Alhoewel de mysql_* nog wel te gebruiken is dadelijk in php6 en nu in php5 het niet meer echt aanteraden is...
Oké dan kun je me dat dat ff uitleggen? heb jij ook al meer dan 100 scripts op de mysql extensie?
Gewijzigd op 14/09/2011 19:28:42 door Niels K
omdat dit nu ook al het geval is namelijk in php5
Quote:
Alhoewel de mysql_* nog wel te gebruiken is dadelijk in php6 en nu in php5 het niet meer echt aanteraden is...
Het gaat mij een beetje om de zin:'in php5 het niet meer echt aanteraden is...
'
Gewijzigd op 14/09/2011 19:31:57 door Niels K
ik kan het je wel AANraden ;) heeft veel meer voordelen ook vind ik
Gewijzigd op 14/09/2011 19:34:08 door Robert dat ben ik
@Ger
tuurlijk kan je ook gewoon in php6 en nu ook in php5 de mysql_* functies en opties blijven gebruiken maar het is naar mijn idee beter om mysqli of pdo te gebruiken omdat mysql_* verouderd is en niet meer verder ontwikkeld word alleen nog maar kleine beetjes onderhoud.
(bron / leesvoer php.net onderaan)
Gewijzigd op 14/09/2011 19:48:51 door Marco PHPJunky
De vraag is ook niet of ik ga toepassen, maar wanneer.
@Robert:
Als je PDO vergelijkt dan moet je het met mysqli doen, en dan is het enige voordeel van PDO dat het database onafhankelijk is.
Dat betekent dus ook dat als je het toepast je de SQL ook daarop moet aanpassen, want: SELECT `field` FROM `table` gaat niet werken in SQLite of MSSQL
Mij is verteld als je meerdere databases wilt kunnen gebruiken is het niet meer is dan meedere database classen te maken met de zelfde methode namen.
alleen elke database class heeft zijn eigen functie maar de methode namen blijven het zelfde.
dus als je sqllite heb blijft de methode functie naam gewoon query() of select()
uiteraard moeten deze query per database kunnen werken omdat de aanroep anders is
hiervoor zou je omdat je weet het is een query misschien alleen de dingen mee te sturen wat je wilt en de query de rest laten doen
eenigste wat je dan doet is alleen de driver in je config file aanpassen
dan is je systeem voor meedere databases toegangelijk.
en mij is verteld dat het veiliger is om met pdo te werken.
Rob.
Gewijzigd op 15/09/2011 10:25:48 door Robert dat ben ik
Dus mysqli is de nieuwe aangeraden methode? Wist niet dat mysql_* deprecated gaat worden.. xP Dan moet ik binnenkort maar eens mijn MySQL class gaan ombouwen, of herschrijven. Ik maak daar nog gebruik van de oudere manieren.. :P
nope, de standaard mysql extensie blijft ook in PHP6, hij wordt alleen niet meer standaard geinstalleerd. Kijk ook eens op het linkje in Marco's post.
@Rob en iedereen:
Ik wilde er alleen even op wijzen dat als je een db engine onafhankelijk project wilt maken er een hoop andere dingen gaan meespelen, want bv SQLlite heeft heel wat minder functionaliteit dan MySQL of MSSQL.
Persoonlijk vind ik het ver gaan om een webproject db universeel te bouwen, naar mijn mening maak je een db keuze voor je een project begint.
Daar heb je opzich hellemaal gelijk in maar stel je hebt een klant die een boukhoudings app heeft in asp of anders met een SQL server en ze willen gaan overstappen naar jou app omdat deze beter is dan degene die ze nu hebben in zulke gevallen is het dan heel erg makkelijk als je PDO hebt gebruikt omdat je dan alleen de verbinding hoeft intestellen op SQL server want de opbouw van de query's is hetzelfde ....
Quote:
Two of the most popular back-end data stores Web developers work with today are MySQL and SQL Server. They are fundamentally similar in that both are data storage and retrieval systems. You can use SQL to retrieve data with either because both claim support for ANSI-SQL. Both database systems support primary keys and key indices, so you can also create indices used simply to speed up queries and for constraining input. Further, both provide some form of XML support.
Gewijzigd op 15/09/2011 12:41:32 door Marco PHPJunky
En daarin heb jij ook weer gelijk, maar dan is het nog hoe ver ga je? Pak je er dan ook SQlite bij? want dat kost je een stukje performance want
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Cmd.CommandText = "SELECT matches.MatchTime, matches.Poule, " + _
"COALESCE(p1.FullName, matches.Player1) AS p1Name, " + _
"IF(matches.IsFinal=0, ROUND(p1.Average * 35 + 3), ROUND(p1.realAvreage * 45 + 4)) AS p1car, " + _
"COALESCE(p2.FullName, matches.Player2) AS p2Name, " + _
"IF(matches.IsFinal=0, ROUND(p2.Average * 35 + 3), ROUND(p2.realAvreage * 45 + 4)) AS p2car " + _
"FROM matches " + _
"LEFT JOIN players AS p1 ON p1.PouleSeq = matches.Player1 " + _
"LEFT JOIN players AS p2 ON p2.PouleSeq = matches.Player2 " + _
"WHERE MatchDate=?MatchDate ORDER BY MatchTime"
"COALESCE(p1.FullName, matches.Player1) AS p1Name, " + _
"IF(matches.IsFinal=0, ROUND(p1.Average * 35 + 3), ROUND(p1.realAvreage * 45 + 4)) AS p1car, " + _
"COALESCE(p2.FullName, matches.Player2) AS p2Name, " + _
"IF(matches.IsFinal=0, ROUND(p2.Average * 35 + 3), ROUND(p2.realAvreage * 45 + 4)) AS p2car " + _
"FROM matches " + _
"LEFT JOIN players AS p1 ON p1.PouleSeq = matches.Player1 " + _
"LEFT JOIN players AS p2 ON p2.PouleSeq = matches.Player2 " + _
"WHERE MatchDate=?MatchDate ORDER BY MatchTime"
gaat niet werken in SQLite. (Alvast mijn excuus dit is toevallig een asp.NET code)
Dus moet je extra dingen aan de clientside (php) doen.
alhoewel ik niet inzie waarom je er dan nog sqlight bij zou pakken maar dat kan ook komen omdat ik zelf nog niet echt met sqlight gewerkt hebt maar dan zou ik gewoon de 2 'grootste' pakken...
Gewijzigd op 15/09/2011 15:20:56 door Ger van Steenderen