H:\mysql >mysqladmin -u root -proot password xroot

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/>";
        }
    }
?>