In php auf eine MySQl-Datenbank zugreifen
Download bibliothek.sql
<?php
$host
= "localhost";
$database
= "bibliothek";
$user =
"gast";
$password =
"xgast";
$query =
"SELECT * FROM leser";
echo
"<p style='color:red'>$query</p>"; //
Kontrollausgabe
// mit Datenbank
verbinden, Datenbank abfragen und Ergebnis
ausgeben
mysql_connect($host,$user,$password);
mysql_select_db($database);
$result
= mysql_query($query);
while($row
= mysql_fetch_array($result)) {
echo
$row["LeserName"] . " ";
echo
$row["LeserGeschlecht"] . "<br/>";
}
?>
Die Abfrage durch den Benutzer
Der Benutzer kann über das Internet durch Vermittlung des PHP-Programm auf eine MySQL- Datenbank zugreifen.
Im
folgenden Beispiel formuliert der Benutzer irgendeine Anfrage in
SQL-Syntax.
Er könnte auf die Idee kommen, den Befehl
DROP
DATABASE bibliothek
zu geben.
Zur
Sicherheit muss das PHP-Programm
derartige unerlaubte Befehle erkennen und blocken.
In unserem
Fall erlaubt die MySQL-Datenbank dem Benutzer gast, unter dessen
Account sich das PHP-Programm bei der Datenbank anmeldet, nur den
SELECT-Befehl.
<form
action="anfrage2.php" method="POST">
SQL:
<input type="text" size="50"
name="query">
<input
type="submit" value="Anfrage">
</form>
<?php
$host
= "localhost";
$database
= "bibliothek";
$user
= "gast";
$password
= "xgast";
$query
= $_POST["query"];
echo
"<p
style='color:red'>$query</p>";
//
Kontrollausgabe
if
($query != "")
{
$query
= str_replace("\\","",$query);
echo
"<p
style='color:red'>$query</p>";
//
Kontrollausgabe
mysql_connect($host,$user,$password);
mysql_select_db($database);
$result
= mysql_query($query);
while($row
= mysql_fetch_row($result))
{
for
($i=0; $i<count($row); $i++) {
echo
$row[$i] . "
";
}
echo
"<br/>";
}
}
?>
Gegenüber
der ersten Programmversion wurden wenige Änderungen vorgenommen:
1.
Es wird ein Formular angezeigt.
2. Die Anfrage $query wird nicht
mehr vorgegeben, sondern dem Formularfeld entnommen.
3. Bei der
Übertragung der Formulardaten wird jedem Hochkomma ein \
(Backslash)
vorangestellt. Das muss mit
str_replace
entfernt werden.
4. Nach mysql_fetch_row
werden diese Daten nacheinander über den Index $i
angesprochen.
5. In diesem Beispiel werden alle count($row)
Felder angezeigt.
Abfrage mit "optimierter" Oberfläche
Bei Google sind Abfragen der folgenden Art möglich.
Mit Hilfe eines PHP-Programm können wir dem Benutzer eine ähnliche
Oberfläche für die Abfrage unserer Datenbank anbieten.
Es
wird deutlich, dass PHP-Programm als öffentliche komfortable
Schnittstelle zur Datenbank dient.
<form
action="anfrage3.php" method="POST">
SQL:
<input type="text" size="50"
name="query">
<input
type="submit" value="Anfrage">
</form>
<?php
host
= "localhost";
database
= "bibliothek";
user
= "gast";
password
= "xgast";
query
= $_POST["query"];
cho
"<p style='color:red'>$query</p>"; //
Kontrollausgabe
f
($query != "") {
//
erwartet eine query der Form
leser.name:erna
list($bezeichner,$wert)
= split(":",$query);
list($datei,$feld)
= split("\.",$bezeichner);
$query
= "SELECT * FROM $datei WHERE $bezeichner='$wert'";
echo
"<p style='color:red'>$query</p>"; //
Kontrollausgabe
mysql_connect($host,$user,$password);
mysql_select_db($database);
$result
= mysql_query($query);
while($row
= mysql_fetch_row($result)) {
for
($i=0; $i<count($row); $i++) {
echo
$row[$i] . " ";
}
echo
"<br/>";
}
}
?>
Alternativ: Abfrage für Anfänger
An die QBE-Abfragen erinnert das folgende HTML-Formular:
<?php
echo
"<p style='color:red'>"; print_r($_POST); echo
"</p>"; // Kontrollausgabe
?>
<form
action="anfrage4.php" method="POST">
<select
name="datei"
size="1">
<option>buch</option>
<option>leiht</option>
<option>leser</option>
</select>
.
<select
name="bezeichner"
size="1">
<option>BuchNr</option>
<option>BuchAutor</option>
<option>BuchTitel</option>
<option>BuchPreis</option>
<option>LeserNummer</option>
<option>LeserName</option>
<option>LeserAlter</option>
<option>LeserGeschlecht</option>
<option>LeserBetreuer</option>
<option>Datum</option>
</select>
<select name="operator"
size="1">
<option><</option>
<option>=</option>
<option>></option>
</select>
<input
type="text" size="10" name="wert">
<input
type="submit" value="Anfrage">
</form>
<?php
$host
= "localhost";
$database
= "bibliothek";
$user
= "gast";
$password
= "xgast";
if
($_POST["wert"]
!= "") {
//
erwartet eine query der Form leser.name:erna
$query
= "SELECT * FROM " . $_POST["datei"] .
" WHERE " . $_POST["bezeichner"] .
$_POST["operator"] . "'" . $_POST["wert"]
. "'";
echo
"<p style='color:red'>$query</p>"; //
Kontrollausgabe
mysql_connect($host,$user,$password);
mysql_select_db($database);
$result
= mysql_query($query);
while($row
= mysql_fetch_row($result)) {
for
($i=0; $i<count($row); $i++) {
echo
$row[$i] . " ";
}
echo
"<br/>";
}
}
?>