IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - PHP-Datenbankzugriff mit SQLite und MySQL



PHP-Datenbankzugriff mit SQLite und MySQL

Ein Crashkurs, der einen Einstieg in den Datenbankzugriff mit PHP5, für SQLite und MySQL bietet.


Autor: Patrick Bucher (paedubucher)
Datum: 31-01-2006, 10:36:25
Referenzen: PHP5 Das Einsteigerseminar, bhv-Verlag, ISBN: 3-8266-7283-6
Schwierigkeit: Fortgeschrittene
Ansichten: 15246x
Rating: Bisher keine Bewertung.

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Datenbankzugriff

Die wichtigste Eigenschaft von php ist wohl der sehr einfach zu realiserende Datenbankzugriff. PHP bietet Schnittstellen für die wichtigsten Datenbanksysteme, seien dies MySQL, Microsoft SQL Server, Oracle oder sogar Access.



SQLite

PHP5 bringt gleich ein eigenes Datenbanksystem mit – SQLite. Dieses ist vorallem für kleinere Webauftritte geeignet, da man kein spezielles RDBMS zu installieren braucht.

Funktionen für SQLite beginnen immer mit sqlite_.



Verbindung zur Datenbank

Die Einfachheit von Datenbankzugriffen in php kann man schon daran erkennen, wie leicht es ist sich mit einer Datenbank zu verbinden. Um eine Verbindung mit einer Datenbank herzustellen, verwendet man die Funktino sqlite_open().

Aufruf:

$db = sqlite_open(„Datenbankname“);

Die Funktion erwartet nur ein einziges Attribut – den Datenbanknamen. Zurückgegeben wird die Verbindung auf die Datenbank. Ist diese NULL, so konnte die Verbindung (aus welchen Gründen auch immer) nicht erstellt werden.

Das Ergebnis dieser Funktion muss unbedingt in einer Variablen (hier $db) abgespeichert werden, damit man mit der offenen Datenbank weiter arbeiten kann.

Die Verbindung wird mit der Funktion sqlite_close() wieder geschlossen, als Parameter muss die Datenbankverbindung angegeben werden.

sqlite_close($db);



Anfragen senden

Um der geöffneten Datenbank Befehle in Form von SQL-Queries zu geben, wird die Funktion sqlite_query() verwendet. Diese Funktion erwartet zwei Parameter:

  1. Eine Datenbankverbindung

  2. Das Query selber

Aufruf:

// Select-Abrage
sqlite_query($db, „SELECT * FROM Personen“);

// Tabelle erstellen
sqlite_query($db, „CREATE TABLE Personen (id INTEGER, vorname VARCHAR(100))“);

Diese Funktion liefert zudem ein Abfrageergebnis zurück. Dieses ist dann interessant, wenn eine SELECT-Anfrage abgeschickt wurde und nun die Datensätze ausgewertet werden sollen.



SELECT-Ergebnisse

Angenommen wir haben in unserer Datenbank eine Tabelle „personen“, welche Vor- und Nachnamen von Personen enthält. Nun möchten wir alle Datensätze abfragen und in PHP weiterverarbeiten können.

Dies geschieht indem man das Ergebnis einer Datenbankabfrage in einer Variablen festhält:

$db = sqlite_open(„datenbank“);
$result = sqlite_query($db, „SELECT * FROM personen“);

Die Variable $result ist nun eine Referenz auf den ersten Datensatz. Mit der Funktion sqlite_fetch_array() erhält man ein assoziatives Array zurück. Die Indizes dieses Arrays entsprechen jeweils dem Spaltennamen. Besonders praktisch an der Tatsache ist, dass bei jedem Funktionsaufruf auf ein Ergebnis automatisch auf den nächsten Datensatz gesprungen wird.

Die Funktion liefert NULL zurück, sobald das Ende erreicht wurde.

Als Beispiel die Ausgabe des obigen Result-Sets:

while($line = sqlite_fetch_array($result))
{
  echo(„Vorname: “ . $line[„vorname“] . „<br>“);
  echo(„Nachname: “ . $line[„nachname“] . „<br>“);
}

Die Variable $line wird bei jedem Durchlauf mit dem aktuellen Datensatz initialisiert.



Weitere Funktionen

Die Datenbankverbindung wird mit der Funktion sqlite_close() geschlossen. Als Parameter muss eine offene Verbindung mitgegeben werden:

sqlite_close($db);

Will man wissen, wie viele Spalten ein Abfrageergebnis hat, so verwendet man die Funktion sqlite_num_fields(). Als Parameter wird ein Result-Set erwartet.

$anzahl_spalten = sqlite_num_fields($result);

Interessant kann auch die Anzahl der Datensätze des Result-Sets sein. Diese Angabe erhält man durch den Aufruf von sqlite_num_rows(). Parameter: Ein Result-Set.

$anzahl_datensaetze = sqlite_num_rows($result);

Weitere interessante Funktionen im PHP-Buch ab Seite 216.



MySQL

MySQL ist wohl DIE DB fürs Web schlechthin, sie geniesst eine enorme Verbreitung bei Web-Entwicklern.

MySQL-Funktionen beginnen immer mit mysql_.



Verbindung zur Datenbank

Bei MySQL verbindet man sich nicht direkt zu einer Datenbank, sondern zu einem Datenbankserver. Die Funktion mysql_connect() benötigt drei Angaben, die Adresse des Datenbankservers, den Benutzernamen und das zugehörige Passwort. Es wird eine Datenbankverbindung zurückgeliefert. Hat diese den Wert NULL, so konnte die Verbindung nicht hergestellt werden.

Beispiel:

$connection = mysql_connect(„165.245.52.10“, „username“, „passwort“);

Das Schliessen einer Datenbankverbindung erfolgt jedoch genau so einfach wie bei SQLite, die Funktion für MySQL heisst mysql_close() und erwartet eine Verbindung zu einem Datenbankserver als Parameter:

mysql_close($connection);



Anfragen senden

Da man sich mit MySQL nicht direkt zu einer Datenbank sondern nur zu einem Datenbankserver verbindet, ist im Gegensatz zu SQLite die Angabe des Datenbanknamens bei jeder Anfrage zwingend.

Datenbankanfragen werden mit der Funktion mysql_db_query() an den Datenbankserver geschickt. Die Parameter:

  1. Der Datenbankname

  2. Das SQL-Statement

  3. Die geöffnete Verbindung

Aufruf:

$result = mysql_db_query(„datenbank“, „SELECT * FROM personen“, $connection);

Das speichern des Ergebnisses macht vorallem für SELECT-Abragen Sinn.

Result-Sets werden analog zu SQLite-Result-Sets verarbeitet, die Funktion um einzelne Datensätze auszulesen heisst mysql_fetch_array().



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06245
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1150
Comments: 0