Wie kann ich mit PHP Bilder aus einer MySQL-Datenbank speichern und abrufen?

Lesezeit: 5 Minuten

Wie kann ich mit PHP Bilder aus einer MySQL Datenbank speichern
Maske

Wie kann ich ein Bild in MySQL einfügen und es dann mit PHP abrufen?

Ich habe in beiden Bereichen nur begrenzte Erfahrung, und ich könnte einen kleinen Code verwenden, um damit anzufangen, dies herauszufinden.

  • Ich empfehle auch, dies zu überdenken und dann Bilder in Ihrem Dateisystem und nicht in der DB zu speichern. Siehe hier: stackoverflow.com/questions/3748/…

    – Scott Evernden

    4. Dezember 2009 um 0:09 Uhr

Wie kann ich mit PHP Bilder aus einer MySQL Datenbank speichern
Andomar

Zuerst erstellen Sie eine MySQL-Tabelle zum Speichern von Bildern, wie zum Beispiel:

create table testblob (
    image_id        tinyint(3)  not null default '0',
    image_type      varchar(25) not null default '',
    image           blob        not null,
    image_size      varchar(25) not null default '',
    image_ctgy      varchar(25) not null default '',
    image_name      varchar(50) not null default ''
);

Dann können Sie ein Bild wie folgt in die Datenbank schreiben:

/***
 * All of the below MySQL_ commands can be easily
 * translated to MySQLi_ with the additions as commented
 ***/ 
$imgData = file_get_contents($filename);
$size = getimagesize($filename);
mysql_connect("localhost", "$username", "$password");
mysql_select_db ("$dbname");
// mysqli 
// $link = mysqli_connect("localhost", $username, $password,$dbname); 
$sql = sprintf("INSERT INTO testblob
    (image_type, image, image_size, image_name)
    VALUES
    ('%s', '%s', '%d', '%s')",
    /***
     * For all mysqli_ functions below, the syntax is:
     * mysqli_whartever($link, $functionContents); 
     ***/
    mysql_real_escape_string($size['mime']),
    mysql_real_escape_string($imgData),
    $size[3],
    mysql_real_escape_string($_FILES['userfile']['name'])
    );
mysql_query($sql);

Sie können ein Bild aus der Datenbank auf einer Webseite anzeigen mit:

$link = mysql_connect("localhost", "username", "password");
mysql_select_db("testblob");
$sql = "SELECT image FROM testblob WHERE image_id=0";
$result = mysql_query("$sql");
header("Content-type: image/jpeg");
echo mysql_result($result, 0);
mysql_close($link);

  • Wenn Ihre Bilder größer als 65 KB sind, sollten Sie den Typ des Blob-Felds ändern. stackoverflow.com/questions/3503841/…

    – Giles Roberts

    13. April 2013 um 6:09 Uhr

  • Bei einer Vielzahl von Bildern habe ich mit dem obigen Code Codierungs- und Escape-Sequenzfehler erhalten. Ich musste $imgData = file_get_contents($filename) ersetzen; mit $fp = fopen($filepath, ‘r’); $imgData = fread($fp, filesize($filepath)); $imgData = addlashes($imgData); fclose($fp); um es dauerhaft zum Laufen zu bringen.

    – Giles Roberts

    13. April 2013 um 6:16 Uhr

  • Der Link am Kopf der Antwort ist auf jeden Fall einen Blick wert, da er deutlich mehr Details enthält.

    – Giles Roberts

    13. April 2013 um 6:26 Uhr

  • Scheint so, als würde dies spektakulär scheitern, wenn die Bilddaten einen Apostroph enthalten würden.

    – Ry-

    18. Juni 2013 um 13:11 Uhr

  • @KrLx_roller: Das Speichern eines Bildes in einem Serverordner ist möglicherweise besser, aber das OP hat nicht danach gefragt. Daher halte ich diese Frage für “nützlich”. +!

    – J.Allan

    5. September 2016 um 18:20 Uhr

Anstatt Bilder in einer Datenbank zu speichern, speichern Sie sie in einem Ordner auf Ihrer Festplatte und speichern Sie ihren Speicherort in Ihrer Datenbank.

  • Ihre Vermutungen. Heutzutage ist es sehr üblich, eine web-/browserbasierte App zu haben, die im Offline-Modus funktionieren soll, daher benötigen Sie einige clevere Cache-Verwaltungen und/oder Bilder in der webbasierten Datenbank (WebSQL, PouchDB, Couchbase, Mongo usw.).

    – ekerner

    22. Februar 2017 um 11:32 Uhr

  • Diese Antwort soll eine bessere Lösung sein; Das OP möchte das Bild in einer Datenbank speichern.

    – Robert Simpson

    6. April 2019 um 18:13 Uhr

  • Subjektiv und nichts mit der Frage zu tun, wie man Bilder in eine Datenbank einfügt.

    – DonP

    10. Januar 2020 um 8:28 Uhr

1646894647 376 Wie kann ich mit PHP Bilder aus einer MySQL Datenbank speichern
Kornel

Beachten Sie, dass das Bereitstellen von Bildern aus der DB normalerweise viel, viel ist viel langsamer, als sie von der Festplatte bereitzustellen.

Sie starten einen PHP-Prozess, öffnen eine DB-Verbindung, lassen die DB Bilddaten von derselben Festplatte und demselben RAM für den Cache wie das Dateisystem lesen, übertragen sie über einige Sockets und Puffer und übertragen sie dann über PHP, was standardmäßig der Fall ist Es kann nicht zwischengespeichert werden und fügt den Overhead der aufgeteilten HTTP-Codierung hinzu.

Moderne OTOH-Webserver können Bilder mit nur wenigen optimierten Kernel-Aufrufen bereitstellen (speicherabgebildete Datei und dieser Speicherbereich wird an den TCP-Stack übergeben), sodass sie nicht einmal Speicher kopieren und es fast keinen Overhead gibt.

Das ist ein Unterschied zwischen der Möglichkeit, 20 oder 2000 Bilder parallel auf einer Maschine bereitzustellen.

Also tu es nicht es sei denn, Sie benötigen unbedingt Transaktionsintegrität (und das kann sogar nur mit Bildmetadaten in DB- und Dateisystem-Bereinigungsroutinen erfolgen) und wissen, wie Sie die Handhabung von HTTP durch PHP verbessern können, um für Bilder geeignet zu sein.

Wie kann ich mit PHP Bilder aus einer MySQL Datenbank speichern
Scott Evernden

Ich empfehle auch, dies zu überdenken und sich dann dafür zu entscheiden, Bilder in Ihrem Dateisystem und nicht in der DB zu speichern. Siehe hier: Bilder in DB speichern – Ja oder Nein?

Meine Meinung ist, anstatt Bilder direkt in der Datenbank zu speichern, wird empfohlen, den Bildspeicherort in der Datenbank zu speichern. Da wir beide Optionen vergleichen, ist das Speichern von Bildern in der Datenbank aus Sicherheitsgründen sicher. Nachteil sind

  1. Wenn die Datenbank beschädigt ist, kann sie nicht abgerufen werden.

  2. Das Abrufen von Bilddateien aus der Datenbank ist im Vergleich zu anderen Optionen langsam.

Andererseits hat das Speichern des Bilddateispeicherorts in db die folgenden Vorteile.

  1. Es ist leicht abzurufen.

  2. Wenn mehr als ein Bild gespeichert ist, können wir Bildinformationen einfach abrufen.

1646894648 360 Wie kann ich mit PHP Bilder aus einer MySQL Datenbank speichern
exussum

Persönlich würde ich das Bild nicht in der Datenbank speichern, sondern es in einem Ordner ablegen, auf den von außen nicht zugegriffen werden kann, und die Datenbank verwenden, um seinen Speicherort zu verfolgen. hält die Datenbankgröße klein und Sie können sie einfach mit PHP einbinden. Ohne PHP gäbe es dann keine Möglichkeit, auf dieses Bild zuzugreifen

1646894649 201 Wie kann ich mit PHP Bilder aus einer MySQL Datenbank speichern
Mubashar

Anstatt das Bild in der Datenbank zu speichern, speichern Sie es auf Ihrem Telefon und PC und verwenden Sie einfach seinen Pfad, da dies Ihre Datenbank speichert

986690cookie-checkWie kann ich mit PHP Bilder aus einer MySQL-Datenbank speichern und abrufen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy