Tutorials >
PHP >
PDO (PHP Data Objects)
|
Gepost op: 03 april 2007 - 20:03 |
|
|
|
Beheerder
|
Goede tutorial.
Misschien de volgende keer een aantal 'grote' voorbeelden erbij zoals bijvoorbeeld een klein nieuws toevoeg systeempje. |
|
|
|
Gepost op: 03 april 2007 - 21:47 |
|
|
|
Crew algemeen
|
Citaat: PDOStatement->bindParam();
Deze functie gaat een waarde geven aan de labels. Als je vraagtekens gebruikt begint deze te tellen vanaf 1 enzovoort. Let op: geen directe waarden intikken, enkel variablen mogen meegegeven worden. Dit omdat PDO referencies gebruikt.
Je hebt ook nog bindValue, waar het geen reference is, maar de value ;) |
|
|
|
Gepost op: 03 april 2007 - 22:06 |
|
|
|
PHP expert
|
Citaat: [I][B]JeXuS[/B] schreef op 03 april 2007 - 21:47[/I]
[..quote..]
Je hebt ook nog bindValue, waar het geen reference is, maar de value ;) Inderdaad, zo kan het ook. Goeie aanvulling |
|
|
|
Gepost op: 04 april 2007 - 01:47 |
|
|
|
Crew .NET
|
Bestaat er bij PHP geen 'finally' na de try/catch - blok?
Want als je bijvoorbeeld met een for-loop gegevens ophaalt en je zet in de try je verbinding open en er loopt iets mis, dan sluit je de verbinding niet en gaat hij achteraf proberen een verbinding te openen die al open staat. Vb (in .NET):
Stel je werkt met een SQL-verbinding en geeft deze de naam "myConn"...
SqlCommand myCommand;
SqlDataReader myReader;
int aantal = 4;
string query;
for (int i = 0; i < aantal; i++)
{
query = "SELECT naam FROM leden WHERE id = '" + i + "' ";
myCommand = new SqlCommand(query, myConn);
try
{
myConn.Open();
myReader = myCommand.ExecuteReader();
while(myReader.Read())
{
//gegevens ophalen
}
myReader.Close();
}
catch (SqlException x)
{
Response.Write(x.Message);
}
finally
{
myConn.Close();
}
}
SqlCommand myCommand; SqlDataReader myReader; int aantal = 4; string query; for (int i = 0; i < aantal; i++) { query = "SELECT naam FROM leden WHERE id = '" + i + "' "; myCommand = new SqlCommand(query, myConn); try { myConn.Open(); myReader = myCommand.ExecuteReader(); while(myReader.Read()) { //gegevens ophalen } myReader.Close(); } catch (SqlException x) { Response.Write(x.Message); } finally { myConn.Close(); } }
Als je de finally hier niet bijzet gaat hij proberen met een nieuwe "i-waarde" de query uit te voeren met een verbinding die al open is en loopt hij ook vast...
Voor de rest zeer goede tutorial! |
|
|
|
Gepost op: 04 april 2007 - 13:27 |
|
|
|
PHP expert
|
Finally zit niet in php5 en als ik lees op deze blog zal deze ook niet in php6 komen. |
|
|
|
Gepost op: 05 april 2007 - 20:13 |
|
|
|
Nieuw lid
|
Nog een kleine note, PDO zit niet standaard in php 5.0, maar is daarvoor wel verkrijgbaar als PECL extensie. Pas vanaf php 5.1 zit PDO er standaard in als extension (natuurlijk wel aanpassen in php.ini). |
|
|
|
Gepost op: 08 april 2007 - 23:03 |
|
|
|
PHP expert
|
Nuja, finally is eigenlijk gewoon een schoonheidje dat misschien meer structuur geeft maar gemakkelijk vervangen kan worden door:
pseudo:
try {
// do something
} catch(Exception e) {
// somethings wrong
}
conn.close();
try { // do something } catch(Exception e) { // somethings wrong } conn.close();
Finally betekend eigenlijk: wordt zowiezo uitgevoerd op het einde van de try-catch blok, whatever er ook gebeurt. Behalve als exit wordt gecalled in een van de onderdelen van de block natuurlijk. Zo is het toch bij JAVA zo. |
|
|
|
Gepost op: 09 april 2007 - 10:43 |
|
|
|
HTML beginner
|
Deze aanpak lijkt sterk op ADO, dat als DB layer gebruikt wordt bij onder meer VB en ASP.NET. Voor sommigen aangenaam werken, maar ik heb er een hekel aan... |
|
|
|
Gepost op: 09 april 2007 - 21:30 |
|
|
|
PHP expert
|
Wat me eigenlijk niet slim lijkt is dat object $mysql noemen. Zo komt er nog wat verwarring als je dan van db veranderd, maar je dezelfde php code gebruikt. |
|
|
|
Gepost op: 16 december 2007 - 16:24 |
|
|
|
Nieuw lid
|
Misschien een voorbeeld van een COUNT() query? Met name het ophalen ervan dan bedoel ik, want dat lukt hier voor geen centimeter.
Zelfs niet als COUNT(veld) AS veld. |
|
|
|
Gepost op: 16 december 2007 - 19:32 |
|
|
|
PHP expert
|
|
|
Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties. |
|
|
|