PHP Kurs Logo  
 
Buttons PHP Kurs - Kapitel Trennlinie Was brauche ich ? Trennlinie Kontakt Trennlinie Impressum & Datenschutz Buttons
 
 
Menu
Allererste PHP Schritte
- Webserver Installation
- PHP Editor Installation

PHP Grundlagen
- PHP Grundwissen
- Mein erstes Programm
- Kommentare einfügen
- Variablen
- PHP+HTML mischen
- If Abfragen
- Rechenarten
- Arrays
- Schleifen
- Funktionen
- Klassen
- Includes
- Sessions und Cookies
- Login mit Sessions
- Login mit Datenbank
- Referer auslesen
- Wert aus Datenbank
- Variablen übergeben

MySQL Grundlagen
- Was ist das ?
- Erste Schritte
- Verbindung herstellen
- Einfache SQL Befehle
- SQL Injection

Häufig gefragt
- Was ist Adwords ?
- Interessante Links
- Wasserzeichen mod_rewrite
- Thumbnails erstellen
- PHP Gästebuch
- PHP Header
- Webseiten auslesen
- Socket Verbindungen
- E-Mail Adressen prüfen
- E-Mails versenden
- $_GET & $_POST
- Datenbank sichern
- Server DDOS Angriffe Abwehren
- Webhosting - Worauf ist zu achten ?

Interessante Artikel


Unsere ersten MySQL Befehle mit PHP

Als Grundlage benötigen wir die Tabelle adressen welche wir im Kursteil Erste Schritte erstellt haben. Desweiteren müssen wir eine offene, aktive Datenbankverbindung zu dieser Datenbank haben, wo Ihr die Tabelle erstellt habt. Wie man die Verbindung herstellt habt Ihr ja im Kursteil Verbindung herstellen kennengelernt.

Einträge in unsere Tabelle adressen mit PMA

Unsere Tabelle hat noch keine Daten, deshalb beschäftigen wir uns erst damit, wie wir diese mit Daten füllen können. Das einfachste ist über PHPMyAdmin. Dazu klicken wir im PHPMyAdmin links auf die Tabelle, wo wir die Daten hinzufügen möchten. Dann haben wir in der oberen Leiste mehrere Optionen.

phpmyadmin leiste

Dort klicken wir auf einfügen, um neue Datensätze hinzuzufügen. Wie bereits besprochen müsst Ihr bei id nichts eintragen. Mit anzeigen kann man sich alle Datensätze anzeigen lassen, sofern man Einträge hat.

Merke: wenn du den Datensatz mit PMA einfügst, zeigt PMA dir den SQL Befehl an, den es ausgeführt hat ! Schau ihn Dir an !

Einträge in unsere Tabelle mit PHP - INSERT

Um etwas in eine Tabelle einzufügen benötigt man den SQL Befehl insert. Um Befehle an SQL zu schicken braucht man den PHP Befehl mysql_query($sql_befehl);.
Wir erstellen einen Eintrag mit dem Befehl:

INSERT INTO adressen (name, adresse, plz, ort, telefon) VALUES ("Heiko Müller", "Musterstraße 1", 12345, "Bremen", "0421-1234567");

Ein Beispiel:

<?php
    $server 
"localhost";
    
$datenbank "php-kurs";
    
$username "web1";
    
$passwort "abcdef";

    
$link mysql_connect($server$username$passwort);
    if (!
$link)            die(mysql_error());

    
$db mysql_select_db($datenbank$link);

    if (
$db)
        {
        
$sql_befehl 'INSERT INTO adressen
                        (name, adresse, plz, ort, telefon)
                        VALUES ("Heiko Müller",
                                "Musterstraße 1",
                                12345,
                                "Bremen",
                                "0421-1234567");'
;

        
mysql_query($sql_befehl$link);
        }

    
mysql_close($link);
?>

Wie Ihr seht gibt man in den ersten runden Klammern die Felder an, die man gerne mit Daten füllen möchte. In den zweiten runden Klammern folgen dann die jeweiligen Werte, in genau der gleichen Reihenfolge wie wir es in der ersten runden Klammer angegeben haben. In dem Beispiel habe ich den SQL Befehl der Übersicht wegen über mehrere Zeilen gestreckt ; dies ist durchaus möglich und praktikabel. Wenn Ihr ganz lange SQL Abfragen habt macht dies sogar Sinn, um den Überblick zu behalten.

In Anführungszeichen habe ich den Wert gesetzt der in das Feld eingetragen werden soll. Möchte ich Anführungszeichen selbst mit speichern, dann muss ich diese mit \ maskieren, wie bereits in dem Kursteil Mein erstes Programm beschrieben. Alternativ kann ich auch die einfachen ' Anführungszeichen nehmen.

WICHTIG !!! In Gästebüchern, Kontaktskripten und ähnlichen gibt man die Daten nicht selbst vor die gespeichert werden, sondern fremde Leute. Vertraue nie darauf, dass das was du speicherst dann auch wirklich in Ordnung ist. Durch eine bestimmte Eingabe kann man so eigene SQL Befehle von aussen auf einem fremden Server ausführen, was ein hohes Sicherheitsrisiko darstellt. Mehr zu dem Thema könnt Ihr hier (Klick) lesen wenn Ihr möchtet. Es handelt sich dabei um sogenannte SQL Injektionen.

Bevor Ihr Daten in die SQL speichert, die Ihr von aussen bekommen habt, benutzt den Befehl addslashes($texteingabe_von_user); um euer Skript sicherer zu machen. Addslashes sorgt dafür, dass kein ungewollter zusätzlicher SQL Code mit eingefügt und ausgeführt wird.


Werte in unserer Datenbank ändern - UPDATE

Wie ändern wir nun einen Eintrag ? Dafür gibt es den UPDATE Befehl. Angenommen unser Herr Müller hat nun eine neue Telefonnummer, dann könnten wir diese mit folgendem Befehl ändern: (diesmal ohne die Datenbank zu öffnen, das Skript habt Ihr ja und könnt diese Zeile einfach nur in euer bestehendes Skript einfügen):

<?php
    mysql_query
('UPDATE adressen SET telefon="04221-98765"
                  WHERE id=1'
);

    
mysql_query('UPDATE adressen SET telefon="04221-98765"
                  WHERE name="Heiko Müller"'
);

    
mysql_query('UPDATE adressen SET telefon="04221-98765"
                  WHERE name LIKE "%Müller%"'
);
?>

Um SQL Befehle zu üben, kann man diese auch direkt in PMA unter dem Menüpunkt SQL eingeben und direkt das Ergebnis sehen !

Hier haben wir zwei mysql_querys. Update bedeutet wir wollen Daten ändern. mit SET sagen wir ihm welches Feld wir in dieser Tabelle aktualisieren wollen und hinter dem Gleichheitszeichen was wir diesem Feld zuweisen wollen. Jetzt müssen wir noch bestimmen welchen Datensatz dies betrifft, was wir mit dem Where Befehl machen. Geben wir diesen Where Befehl nicht an, dann wird die Telefonnummer bei allen Einträgen in der Datenbank geändert !

Bei der ersten Query bestimmen wir den Datensatz anhand der eindeutig zuordenbaren id=1. Bei dem zweiten Query ändern wir alle Einträge, wo der name Heiko Müller ist. Gibt es Heiko Müller mehrfach, so wird bei allen die Telefonnummer gesetzt.

In der dritten Query beschreiben wir ganz schwammig, welche Datensätze wir geändert haben möchten. LIKE bedeutet soviel wie "die ungefähr so aussehen wie ...". Es werden alle Einträge geändert, die im Feld name irgendwo Müller stehen haben, egal was davor oder danach steht. Dieses "egal was davor oder danach kommt" signalisieren wir durch das Prozentzeichen. Schreiben wir nur LIKE "%Müller", dann wären nur die Müllereinträge betroffen, wo VOR dem Müller noch irgendetwas steht - dahinter dürfte nichts mehr stehen. Würden wir LIKE "Müller%" schreiben, dann wären dies alle Einträge die Müller am ANFANG stehen hätten und dahinter irgendwas. Davor dürfte nichts stehen.


Datensätze selektieren und mit php ausgeben - SELECT

Jetzt wollen wir nicht nur speichern oder ändern, sondern auch mal Daten aus der Datenbank holen und lesen. Dies geschieht mit dem SELECT Befehl.

<?php
    $server 
"localhost";
    
$datenbank "php-kurs";
    
$username "web1";
    
$passwort "abcdef";

    
$link mysql_connect($server$username$passwort);
    if (!
$link)            die(mysql_error());

    
$db mysql_select_db($datenbank$link);

    if (
$db)
        {
        
$re mysql_query("SELECT * FROM adressen WHERE id=1"$link);

        
# Jetzt können wir die Daten als Array oder Objekt bekommen
        # wir nehmen die Daten in einem Array

        
$daten mysql_fetch_array($reMYSQL_ASSOC);

        
print_r($daten);
        }

    
mysql_close($link);
?>

Ausgabe:Array
(
    [id] => 1
    [name] => Heiko Müller
    [adresse] => Musterstraße 1
    [plz] => 12345
    [ort] => Bremen
    [telefon] => 04221-98765
)

In der mysql_query speichere ich das Ergebnis in der Variablen $re. Dieses Ergebnis aus der Abfrage benötige ich um Datensätze aus der Datenbank zu holen. Zum Daten holen benutze ich das mysql_fetch_array($re, MYSQL_ASSOC);. Man könnte es auch mit mysql_fetch_object(); holen, allerdings haben wir uns hier mit Arrays beschäftigt und bleiben dabei. Das MYSQL_ASSOC bedeutet, dass in dem Array die Feldernamen mit übernommen werden und auch an die dazugehörigen Inhalte gebunden werden. So steht in id auch 1 drin und in telefon auch die Telefonnummer !

Wir könnten im weiteren Programm die Daten nun benutzen mit:

<?php
    
echo "Er heisst" $daten["name"] . " und seine Telefonnummer
          lautet: " 
$daten["telefon"];
?>


Mehrere Einträge holen und anzeigen lassen - SELECT

Tragt mit PHPMyAdmin noch ein paar Einträge zum probieren ein. Wir werden jetzt alle Einträge auslesen, die wir in dieser Tabelle finden.

<?php
    $server 
"localhost";
    
$datenbank "php-kurs";
    
$username "web1";
    
$passwort "abcdef";

    
$link mysql_connect($server$username$passwort);
    if (!
$link)            die(mysql_error());

    
$db mysql_select_db($datenbank$link);

    if (
$db)
        {
        
$re mysql_query("SELECT * FROM adressen"$link);

        while(
$daten mysql_fetch_array($reMYSQL_ASSOC))
            {
            echo 
$daten["name"] .     "-";
            echo 
$daten["adresse"] ."-";
            echo 
$daten["plz"] .     "-";
            echo 
$daten["ort"] .     "-";
            echo 
$daten["telefon"] ."<br>";
            }
        }

    
mysql_close($link);
?>

Ausgabe:Heiko Müller-Musterstraße 1-12345-Bremen-04221-98765
Peter Klein-Heldenstraße 15-98765-Hamburg-040 - 8458345
Monika Krause-Kaya Yanar Straße 4711-45923-Berlin-0411 - 88392

Wir könnten anstatt dem Sternchen in dem Select auch bestimmte Felder angeben, die wir auslesen wollen. Dies spart Speicher bei großen Abfragen, es stehen aber auch nur die Felder zum Auslesen zur Verfügung, welche wir in dem Select angegeben haben.

Beispiel:

SELECT name,telefon FROM adressen


Die Select Abfrage weiter eingrenzen

Wir könnten diese Select Abfrage auch noch weiter begrenzen. Dies würden wir wieder mit dem Where Befehl machen. Wir könnten uns zum Beispiel nur alle Einträge anzeigen lassen, die aus Bremen kommen:

SELECT * FROM adressen WHERE ort="BREMEN";

Auch die Where Bedingung kann weiter verknüpft werden, so könnten wir an das Where noch eine Bedingung hinten dranhängen, zum Beispiel zusätzlich NUR die Einträge die auch noch (AND) den Namen Müller haben:

SELECT * FROM adressen WHERE ort="BREMEN" AND name LIKE "%Müller%";

Statt AND können wir auch OR verwenden, was nicht UND bedeutet, sondern ODER. Es gibt viele verschachtelte Möglichkeiten. Man muss sich nur zuerst klar darüber werden, was man genau aus der Datenbank möchte und dann muss man versuchen dieses klar in SQL zu formulieren.

Alle Einträge wählen, wo der Ort NICHT Bremen ist und der name NICHT so ähnlich wie Müller ist.

SELECT * FROM adressen WHERE ort!="Bremen" AND name NOT LIKE "%Müller%";

Zum Anfang solltet Ihr euch mit den normalen Abfragen begnügen. Es gibt Abfragen, an denen selbst spezialisten einen halben Tag daran rumarbeiten können, um sämtliche Bedingungen mit einzubinden. Man kann verschiedene Tabellen miteinander verknüpfen, über mehrere Datenbanken mit einer einzigen Abfrage gehen und daraus die kompliziertesten Gebilde bauen.

Datensätze in der Datenbank löschen - DELETE

Wir haben Datensätze gespeichert, geändert und ausgelesen. Wie lösche ich nun einen Datensatz ? Hierfür benötigen wir den DELETE Befehl von MySQL.

DELETE FROM adressen WHERE id=1;

Es wird der Eintrag aus der Tabelle adressen gelöscht, wo die id=1 ist. Wie bei allen SQL Befehlen könnten wir auch hier weiter begrenzen und Bedingungen hinzufügen.

Merke: Gerade der Delete Befehl ist kritisch. Wenn man die Bedingung vergisst zu formulieren kann man unter Umständen schon alle 3000 Einträge aus einer Tabelle löschen, anstatt nur eines eintrags. Arbeitet man an Tabellen die schon viele Einträge haben, freut man sich immer wieder wenn man vorher mit PHPMyAdmin eine Kopie der Tabelle und des Inhalts exportiert und abspeichert.






<<<< zurück Kapitelauswahl vorwärts >>>>






Content
 
  Bottom Design  

PepperTools.de Software Download | Software Shop
PepperTools Software Shop