SQL-Befehle mit PHP

Wir wollen als Beispiel alle Datensätz aus der Tabelle
\begin{code}kneipen\end{code}
in der Datenbank
\begin{code}www2\end{code}
ausgeben.


\begin{liste}
\par
\item
Zuerst muß eine Verbindung von PHP zum Datenbank-Ser...
... oder falsch
ist, d.h. ob die Abfrage geklappt hat oder nicht.
\par
\end{liste}

Da wir aber den
\begin{code}SELECT\end{code}
-Befehl an die Datenbank geschickt haben, wollen wir die von der Datenbank zurückgelieferten Datensätze auslesen.

Wir haben pro Datensatz die beiden Spalten
\begin{code}Name\end{code}
und
\begin{code}Art\end{code}

angefordert.

Wir können überprüfen, ob wir etwas zurückbekommen haben:
\begin{code}
(!\$erg) \{
echo ''Irgendetwas ist schief gelaufen.\(\backslash\)n'';
exit;
\}
\end{code}

Nun können wir zeilenweise auslesen:

Als erstes interessiert uns wie viele Einträge wir zurückbekommen haben:
\begin{code}
\$num=pg\_NumRows(\$erg);
\end{code}

Wir können überprüfen, ob wir Einträge haben:
\begin{code}
(!\$result) \{
echo ''An error occured.\(\backslash\)n'';
exit;
...
...=0) \{
echo ''nichts in der Datenbank!\(\backslash\)n'';
exit;
\}
\end{code}

Nun haben wir mehrere Möglichkeiten das Resultat auszulesen:
\begin{code}
\$Name = pg\_Result(\$erg,0,''Name'');
\$Art = pg\_Result(\$erg,0,''Art'');
\end{code}

Erstes Feld ist das Resultat des Aufrufs, zweites Feld ist die Zeile (0 ist die erste Zeile in diesem Fall), dricodees Feld ist der Name der Spalte der extrahiert werden soll. Diese Art ist praktisch wenn ein paar Daten herausgeholt werden sollen, wird aber sehr schnell unhandlich, wenn es mehr werden. Dafür gibt es :


\begin{code}
\$arr = pg\_fetch\_array (\$erg, 0);
echo \$arr[0];
echo \$arr[''Name''];
\end{code}

In obigen Beispiel haben wir zwei Druckanweisungen, eine mit einem numerischen Parameter, die andere unter Ausnutzung der Fähigkeit zu assoziativen Vektoren von PHP. Andere Methoden um eine Zeile in ein PHP-Konstrukt umzuwandeln sind


\begin{liste}
\par
\item pg\_fetch\_object: Ein Objekt wird
zurückgegeben, die...
...en Dingen, da dadurch keine Leistungssteigerung
erreicht wird.
\par
\end{liste}

Nun legen wir eine Schleife darauf um alle Datensätze auszulesen:
\begin{code}
\$zaehler = 0;
while (\$zaehler\textless{}\$num)
\{
\$arr = pg\...
...rt'']\textless{}BR\textgreater{}\(\backslash\)n'';
\$zaehler++;
\}
\end{code}

Die Ergebnisse verarbeiten wir also zeilenweise zu HTML-Text. Obiges häcodeen wir besser mit einer for-Schleife erschlagen.

Am Ende empfiehlt es sich, die Verbindung zur Datenbank zu kappen:
\begin{code}
pg\_Close(\$verbindung);
\end{code}

Dies waren nur die einfachsten PostgresSQL-Befehle in PHP, die aber schon für sehr viele Anwendungen ausreichen. Weiterführende Befehle kann man im HREF URL="../php-manual/ref.pgsql.html" name="Handbuch" nachlesen.


\begin{question}
\par
Richten Sie sich eine Datenbank ein, setzen Sie die Zugrif...
...atenbank eine Tabelle ein die dem Format Kneipen entspricht.
\par
\end{question}

\begin{question}
\par
Schreiben Sie ein PHP-Programm, das aus der Tabelle
\begin...
...tenbank \begin{code}www2\end{code} alle Datensätze ausgibt.
\par
\end{question}

\begin{question}
\par
Schreiben Sie ein HTML-Formular, das neue Datensätze in
d...
...{code} in der Datenbank \begin{code}www2\end{code} einfügt.
\par
\end{question}