Verwendung des MySQL BLOB-Datentyps zum Speichern von Bildern mit PHP unter Ubuntu 20.04

Verwenden des MySQL BLOB-Datentyps zum Speichern von Bildern mit PHP unter Ubuntu 20.04

Der MySQL BLOB-Datentyp ermöglicht es, Binärdaten wie Bilder, Multimedia- und PDF-Dateien in MySQL-Datenbanken zu speichern. Dieser Ansatz bietet eine praktische Lösung, um Bilder direkt in der Datenbank zu speichern, anstatt ein separates Dateisystem einzurichten.

Warum Bilder in der Datenbank speichern?

Bilder können neben anderen Informationen wie Passfotos und Unterschriften von Studenten in einer MySQL-Datenbank zentralisiert gespeichert werden. Dies erleichtert die Verwaltung und Sicherung der Datenbank, da alle Daten in einer einzigen Dump-Datei gesichert werden können. Darüber hinaus ermöglicht die Verwendung des MySQL BLOB-Datentyps eine schnellere Datenabfrage und gewährleistet die Einhaltung von Datenvalidierungsregeln und referenzieller Integrität.

Voraussetzungen

Für dieses Tutorial benötigen Sie einen Ubuntu 20.04-Server, der mit Apache, MySQL und PHP eingerichtet ist. Nähere Informationen zur Einrichtung des LAMP-Stacks finden Sie im Tutorial “Installieren des Linux, Apache, MySQL, PHP (LAMP)-Stacks unter Ubuntu 20.04”.

Schritt 1 – Erstellen einer Datenbank

Um mit der Verwendung des MySQL BLOB-Datentyps zu beginnen, erstellen Sie zunächst eine Datenbank. Öffnen Sie eine SSH-Verbindung zu Ihrem Server und melden Sie sich als root-Benutzer bei Ihrem MySQL-Server an. Geben Sie das root-Passwort ein und führen Sie den folgenden Befehl aus, um eine Datenbank namens “test_company” zu erstellen:

CREATE DATABASE test_company;

Erstellen Sie dann einen Benutzer namens “test_user” mit den erforderlichen Berechtigungen für die Datenbank:

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORT';

Geben Sie anschließend diesem Benutzer volle Berechtigungen für die Datenbank:

GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';

Leeren Sie abschließend die Berechtigungstabelle, um die Berechtigungen zu aktualisieren:

FLUSH PRIVILEGES;

Erstellen Sie nun eine Tabelle in der Datenbank test_company, um Beispielprodukte zu speichern. Verbinden Sie sich erneut mit dem MySQL-Server als “test_user” und führen Sie den folgenden Befehl aus:

CREATE TABLE `products` (
  `product_id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `product_name` VARCHAR(50),
  `price` DOUBLE,
  `product_image` BLOB
) ENGINE = InnoDB;

Die Tabelle “products” verfügt über vier Spalten: product_id, product_name, price und product_image. Die product_image-Spalte verwendet den BLOB-Datentyp, um die Bilddaten zu speichern.

LESEN  Yoomee Review 2023 – Echte Erfahrungen oder Betrug?

Schritt 2 – Erstellen von PHP-Skripten zum Verbinden und Befüllen der Datenbank

Erstellen Sie ein PHP-Skript, das eine Verbindung zur Datenbank herstellt und Beispieldaten in die Tabelle products einfügt. Öffnen Sie dazu eine neue Datei mit einem Texteditor und fügen Sie den folgenden Code ein:

<?php
define('DB_NAME', 'test_company');
define('DB_USER', 'test_user');
define('DB_PASSWORD', 'PASSWORT');
define('DB_HOST', 'localhost');

$pdo = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$products = [];
$products[] = [
  'product_name' => 'VIRTUAL SERVERS',
  'price' => 5,
  'product_image' => file_get_contents("https://automobile.lol/wp-content/uploads/2023/10/wie-benutzt-man-die-blob-datei.png")
];
$products[] = [
  'product_name' => 'MANAGED KUBERNETES',
  'price' => 30,
  'product_image' => file_get_contents("https://i.imgur.com/cCc9Gw9.png")
];
$products[] = [
  'product_name' => 'MySQL DATABASES',
  'price' => 15,
  'product_image' => file_get_contents("https://i.imgur.com/UYcHkKD.png")
];

$sql = "INSERT INTO products(product_name, price, product_image) VALUES (:product_name, :price, :product_image)";

foreach ($products as $product) {
  $stmt = $pdo->prepare($sql);
  $stmt->execute($product);
}

echo "Datensätze erfolgreich eingefügt";
?>

Stellen Sie sicher, dass Sie die richtigen Datenbankzugangsdaten in den Konstanten DB_USER, DB_PASSWORD und DB_HOST angeben. Fügen Sie den Code in eine PHP-Datei wie “insert_products.php” ein und rufen Sie diese Datei in Ihrem Webbrowser auf, um die Beispieldaten in die Tabelle products einzufügen.

Schritt 3 – Anzeigen der Produktinformationen aus der MySQL-Datenbank

Erstellen Sie ein weiteres PHP-Skript, das die Produktinformationen aus der MySQL-Datenbank abruft und in Ihrem Webbrowser anzeigt. Öffnen Sie eine neue Datei in Ihrem Texteditor und fügen Sie den folgenden Code ein:

<html>
<title>Verwendung von BLOB und MySQL</title>
<body>
<?php
require_once 'config.php';

$sql = "SELECT * FROM products";
$stmt = $pdo->prepare($sql);
$stmt->execute();
?>

<table border='1' align='center'>
<caption>Produktdatenbank</caption>
<tr>
<th>Produkt-ID</th>
<th>Produktname</th>
<th>Preis</th>
<th>Produktbild</th>
</tr>

<?php
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  echo '<tr>';
  echo '<td>' . $row['product_id'] . '</td>';
  echo '<td>' . $row['product_name'] . '</td>';
  echo '<td>' . $row['price'] . '</td>';
  echo '<td>' . '<img src="data:image/png;base64,' . base64_encode($row['product_image']) . '" width="50px" height="50px"/>' . '</td>';
  echo '</tr>';
}
?>

</table>
</body>
</html>

Speichern Sie die Datei als “display_products.php” und rufen Sie sie in Ihrem Webbrowser auf, um die Produktinformationen aus der MySQL-Datenbank anzuzeigen. Sie sollten eine HTML-Tabelle mit den Produktdaten und den entsprechenden Bildern sehen.

LESEN  Adobe After Effects für Windows: Das Zauberwerkzeug für Videos in deinen Händen!

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie den MySQL BLOB-Datentyp verwenden, um Bilder in einer MySQL-Datenbank zu speichern. Sie haben auch gesehen, wie Sie PHP-Skripte erstellen können, um eine Verbindung zur Datenbank herzustellen, Daten einzufügen und abzurufen sowie die Ergebnisse in Ihrem Webbrowser anzuzeigen. Die Verwendung des MySQL BLOB-Datentyps kann sehr nützlich sein, um Bilder und andere Binärdaten direkt in der Datenbank zu speichern.