Mysql Script: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= Dynamische Webseiten mit PHP und MySQL – Prinzip = == Einführung == * Dynamische Webseiten generieren Inhalte zur Laufzeit, abhängig von Benutzereingabe…“) |
(kein Unterschied)
|
Version vom 15. März 2025, 10:20 Uhr
Dynamische Webseiten mit PHP und MySQL – Prinzip
Einführung
- Dynamische Webseiten generieren Inhalte zur Laufzeit, abhängig von Benutzereingaben oder Datenbankinformationen.
- PHP als serverseitige Skriptsprache verarbeitet Anfragen und interagiert mit einer MySQL/MariaDB-Datenbank.
- Im Gegensatz zu statischen HTML-Seiten können Inhalte aktualisiert, gefiltert und personalisiert werden.
Architektur einer dynamischen Webseite
- Ein typischer Aufbau besteht aus drei Hauptkomponenten:
- Client – Webbrowser sendet Anfragen an den Server.
- Webserver – Nginx oder Apache verarbeitet PHP-Skripte.
- Datenbank – MySQL/MariaDB speichert und liefert Inhalte.
- Ablauf einer Anfrage:
- Nutzer ruft eine URL auf → Anfrage wird an den Webserver gesendet.
- Webserver führt das PHP-Skript aus → PHP verarbeitet Eingaben.
- PHP stellt eine Verbindung zur MySQL-Datenbank her und holt Daten.
- PHP generiert HTML-Code basierend auf den Datenbankinhalten.
- Der HTML-Code wird an den Browser gesendet und angezeigt.
PHP mit MySQL verbinden
- Verbindung zur Datenbank herstellen:
<?php
$servername = "localhost";
$username = "root";
$password = "passwort";
$dbname = "meinedatenbank";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
echo "Erfolgreich verbunden";
?>
Datenbankabfragen mit PHP
- Daten in die Datenbank einfügen:
<?php
$sql = "INSERT INTO nutzer (name, email) VALUES ('Max', 'max@example.com')";
if ($conn->query($sql) === TRUE) {
echo "Neuer Datensatz erfolgreich hinzugefügt";
} else {
echo "Fehler: " . $conn->error;
}
?>
- Daten aus der Datenbank abrufen:
<?php
$sql = "SELECT id, name, email FROM nutzer";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"] . "<br>";
}
} else {
echo "Keine Ergebnisse";
}
?>
Formulare und Benutzereingaben
- PHP ermöglicht Interaktion durch Formulare.
<form method="post" action="verarbeitung.php">
Name: <input type="text" name="name"><br>
Email: <input type="email" name="email"><br>
<input type="submit" value="Absenden">
</form>
- Verarbeiten der Eingaben in PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$sql = "INSERT INTO nutzer (name, email) VALUES ('$name', '$email')";
if ($conn->query($sql) === TRUE) {
echo "Daten erfolgreich gespeichert";
} else {
echo "Fehler: " . $conn->error;
}
}
?>
Sicherheitsaspekte
- SQL-Injections verhindern:
<?php
$stmt = $conn->prepare("INSERT INTO nutzer (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$stmt->execute();
?>
- Cross-Site Scripting (XSS) vermeiden:
<?php echo htmlspecialchars($row["name"]); ?>
Erweiterte Abfragen und Performance-Optimierung
- Indexierung für schnellere Abfragen:
- create index idx_kw on my_table(kw);
- explain select * from my_table where kw=15;
- View für häufig genutzte Abfragen:
- create view kw_statistik as select kw, sum(tests) as gesamt_tests from my_table group by kw;
Mehr Datensicherheit und Transaktionen
- Sperren und Transaktionen für Datenintegrität:
- start transaction;
- update my_table set labor=200 where kw=15;
- commit; *(statt commit auch rollback möglich)*
Fortgeschrittene Benutzerverwaltung
- Benutzer mit eingeschränkten Rechten:
- create user 'statuser'@'localhost' identified by 'safe123';
- grant select on my_db.* to 'statuser'@'localhost';
Dynamische Berechnungen in SQL
- SUM(), AVG() und andere Aggregatfunktionen:
- select avg(prozent) from my_table where tests > 500000;
- CASE-Anweisungen für bedingte Berechnungen:
- select kw, case when prozent > 5 then 'hoch' else 'niedrig' end as risiko from my_table;
Triggers und Events für Automatisierungen
- Automatische Protokollierung bei INSERT:
- create trigger log_insert after insert on my_table for each row insert into log_table (aktion, zeit) values ('INSERT', now());
- Zeitgesteuerte Events:
- create event cleanup_old_entries on schedule every 1 day do delete from my_table where kw < 10;
JSON-Unterstützung in MySQL 5.7+ und MariaDB
- Speichern von JSON-Daten:
- create table json_test (id int auto_increment primary key, daten json);
- Abfragen innerhalb von JSON-Feldern:
- select json_extract(daten, '$.name') from json_test;
Fazit
- Dynamische Webseiten ermöglichen interaktive und datenbankgestützte Anwendungen.
- PHP verarbeitet Benutzeranfragen und stellt Daten aus MySQL bereit.
- Sicherheitsmaßnahmen wie Prepared Statements und Validierungen sind essenziell.
- Durch Kombination mit CSS und JavaScript können erweiterte Funktionen umgesetzt werden.