Dienstag, 10. März 2015

Mit PHP auf eine MySQL Datenbank zugreifen

Anmerkung: Die hier vorgestellte Methode ist unsicher und veraltet. Ich habe sie als leichten Einstieg gewählt, für richtige Anwendungen sollte die Klasse mysqli verwendet werden.

Im heutigen Post möchte ich zeigen, wie man mittels PHP auf eine MySQL Datenbank zugreift. Wie das mit C# möglich ist, ist auf Udo's Blog beschrieben.
In PHP ist dies ganz einfach, es gibt hierfür viele Standardfunktionen.
Zuerst müssen wir eine Verbindung zur Datenbank herstellen, welches wir folgendermaßen tun:

mysql_connect ("server address", "username", "password");

Läuft das PHP Skript auf dem gleichen Server, auf welchem sich auch die Datenbank befindet, wird "localhost" als Adresse des Servers funktionieren.
Anschließend wählen wir die Datenbank aus, die wir benutzen möchten (auf einem Server kann es mehrere Datenbanken geben):

mysql_select_db("database");

Mittels mysql_query können wir dann eine beliebige MySQL Abfrage ausführen, zum Beispiel Daten in eine Tabelle schreiben:

mysql_query("INSERT INTO Table(Rows) VALUES (Values);");

Um Daten zu lesen, speichern wir uns das Ergebnis der Abfrage in einer Variable und fragen dann mittels mysql_fetch_object von dieser Variable die zurückgegebenen Zeilen ab. Mittels x->Row können wir den Inhalt der Spalte Row aus x abfragen:

$query = mysql_query("SELECT Rows FROM Table WHERE condition;);
while($row = mysql_fetch_object($query))
   {
echo "$row->Row";
   }

Ich habe zum Ausprobieren auf db4free.net eine Datenbank erstellt, die Datenbank und der Benutzername heißen "csharptricks", das Passwort "12345678".
Es gibt in dieser eine Tabelle Customers, welche die Stringspalten FirstName und LastName enthält.
Das folgende PHP Skript (http://bloggeroliver.bplaced.net/PHPExamples/mysql.php) fügt eine neue Zeile in die Tabelle ein, mit den Werten welche als POST Parameter übergeben wurden. Anschließend gibt es zeilenweise jeden Tabelleneintrag aus:

<?php
mysql_connect ("db4free.net", "csharptricks", "12345678");
mysql_select_db("csharptricks");

$FirstName = $_POST["FirstName"];
$LastName = $_POST["LastName"];

mysql_query("INSERT INTO Customers (FirstName, LastName) VALUES ('$FirstName', '$LastName');");

$query = mysql_query("SELECT FirstName, LastName FROM Customers;");
while($row = mysql_fetch_object($query))
   {
          echo "$row->FirstName<br />";
          echo "$row->LastName<br />";
   }
?>

Kommentare:

  1. Nur zur Info, mysql Funktionen sollten nicht mehr verwendet werden, da sie durch mysqli und PDO ersetzt wurden und außerdem nicht up to date sind.

    AntwortenLöschen
    Antworten
    1. Das ist mir bewusst, aber danke für den Tipp!
      Kurze Erklärung was ich mir gedacht habe: Ich wollte hier einen einfachen Einstieg bieten, und dann in einem späteren Post mysqli verwenden (ich denke bei dem Post, wo ich prepared statements erkläre, um SQL Injections zu erschweren).

      Löschen
    2. Sollte keine Kritik sein. Ich wollte lediglich darauf hinweisen. Btw, ich finde deine Blog super, weiter so!

      Löschen
    3. Habe ich auch nicht so aufgenommen, und auch wenn, wie gesagt, danke für den Hinweis, und jetzt nochmal danke für dein Lob! :)

      Löschen