Upload image in MySQL

madirfan

Erfahrenes Mitglied
Hallo leute..

Step1:

CREATE TABLE `images` (
`ImageId` int(10) NOT NULL AUTO_INCREMENT,
`Image` longblob,
`FileType` varchar(32) DEFAULT NULL,
PRIMARY KEY (`ImageId`)
)

Update file
PHP:
<?php
      if ($_POST['Submit']) {
        if ($_POST['MAX_FILE_SIZE'] >= $_FILES['file']['size']) {
          //print_r($_FILES);
          mysql_connect("localhost", "+++++", "+++++") or die(mysql_error());
          mysql_select_db("images");
          $photo = addslashes(fread(fopen($_FILES['file']['tmp_name'], "r"),
$_FILES['file']['size']));
           $query = sprintf("INSERT INTO images(Image, FileType) VALUES
('%s', '%s')", $photo, $_FILES['file']['type']);
           if (mysql_query($query)) {
            $messages[] = "Your files is successfully store in database"; 
           } else {
            $messages[]= mysql_error();
           }
          } else {
           $messages[]="The file is bigger than the allowed size please resize";
          }
        }
      ?>
      <html>
      <head>
      <title>Add Image</title>
      </head>    
      <body>
      <? 
      if (isset($messages)) { 
        foreach ($messages as $message) {
         print $message ."<br>";
        } 
      }
      ?>
      <form action="" method="post" enctype="multipart/form-data" name="form1">
      <input type="file" name="file">
      <input type="hidden" name="MAX_FILE_SIZE" value="96000000">
      <input type="submit" name="Submit" value="Submit">
      </form>
      </body>
      </html>

ich bekomm jedesmal eine fehlermeldung,wenn ich ein bild hochladen will
No database selected

warum?:suspekt:
 
PHP:
mysql_select_db("images");

Heißt die Tabelle wirklich auch images oder bist du da nur mit dem Tabellennanmen durcheinander gekommen?

Änder doch mal in:

PHP:
mysql_select_db("images") or die(mysql_error());
 
Heißt bei dir die Tabelle und die Datenbank images?
Überprüfe das noch einmal, wenn das nicht funktioniert übergebe mal die Connection Id mit.
Also so z.B.
PHP:
$connect=mysql_connect("localhost", "+++++", "+++++") or die(mysql_error());
if ( !mysql_select_db("images", $connect) )
        {
            echo ("ERROR: Cannot find database images");
        }

sry Felix war schneller.
 
um ganz sicher zu gehen hab ich hab ein neues tabel erstelt.
CREATE TABLE `bilder` (
`ImageId` int(10) NOT NULL AUTO_INCREMENT,
`Image` longblob,
`FileType` varchar(32) DEFAULT NULL,
PRIMARY KEY (`ImageId`)
)

und den script entsprechend abgepass:
PHP:
<?php
      if ($_POST['Submit']) {
        if ($_POST['MAX_FILE_SIZE'] >= $_FILES['file']['size']) {
          //print_r($_FILES);
          mysql_connect(localhost, +++, +++) or die(mysql_error());
          mysql_select_db("bilder") or die(mysql_error());  
          $photo = addslashes(fread(fopen($_FILES['file']['tmp_name'], "r"),
$_FILES['file']['size']));
           $query = sprintf("INSERT INTO bilder (Image, FileType) VALUES
('%s', '%s')", $photo, $_FILES['file']['type']);
           if (mysql_query($query)) {
            $messages[] = "Your files is successfully store in database"; 
           } else {
            $messages[]= mysql_error();
           }
          } else {
           $messages[]="The file is bigger than the allowed size please resize";
          }
        }
      ?>
      <html>
      <head>
      <title>Add Image</title>
      </head>    
      <body>
      <? 
      if (isset($messages)) { 
        foreach ($messages as $message) {
         print $message ."<br>";
        } 
      }
      ?>

fehlermeldung:

Access denied for user 'irfan_db'@'%' to database 'bilder'
 
Zuletzt bearbeitet:
PHP:
mysql_select_db("bilder")
Hier kommt nicht der Tabellenname rein, sondern der Datenbankname.
 
ohh man.. bin so ein trottel (!)
jetzt passt es...

weisst du was ich machen muss, um zu sehen, welche ID das image hat,wenn ich das hochgeladen hab..
und wie funks das mit multi upload
 
Zuletzt bearbeitet:
MultiUpload:
Post Feld als Array setzen...
<input type="file" name="file[]">
Mit foreach-Schleife durchlaufen...

Zuletzt eingefügte ID auslesen:
mysql_insert_id();
 
ich hab eine image file erstellt
PHP:
<?php
mysql_connect("localhost","+++","++++") or die(mysql_error());
mysql_select_db("irfan");
$result = mysql_query(sprintf("SELECT * from bilder WHERE ImageId = %d", $_GET['id']));
$row = mysql_fetch_array($result);
header(sprintf("Content-type: %s", $row['FileType']));
print $row['Image'];
?>

und versuch dann das image anzuzeigen
<img src="image.php?id=<?= $_GET['id']; ?>">

wegen ID aneige:
$id= mysql_insert_id();
print "<p>This file has the following Database ID: <b>$id</b>";

das scheint nicht zu gehen.. ich bekomm immer eine 0 als ID

leider erfolglos..
 
Zuletzt bearbeitet:
Wenn du das Bild aufn Server geladen hast, reicht das <img src=""> vollkommend...
Du musst also nicht extra per PHP nen Header definieren und den Mime-Type mit speichern etc...

Zur ID Anzeige:
Setz beim SQL-Query nen OR die(mysql_error()) hinter...
 
Zurück