2014-06-23 2 views
0

У меня проблема с загрузкой фотографии в базе данных с использованием PHP и Microsoft SQL Server. Это мой первый раз и не могу найти решение через Интернет, может кто-то поможет?Не удается загрузить фотографию в базе данных MS с помощью PHP

Вот мой HTML код формы:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>e-Scan Archiving - Accounting</title> 
    <link href="main1.css" rel="stylesheet" type="text/css"> 


    </head> 

    <body> 

    <form method="post" action="addMember.php" enctype="multipart/form-data"> 
     <p> 
        Please Enter the Members Name. 
       </p> 
       <p> 
        Name: 
       </p> 
       <input type="text" name="nameMember"/> 

       <p> 
        Please Upload a Photo of yourself. 
       </p> 
       <p> 
        Photo: 
       </p> 
       <input type="hidden" name="size" value="6000000"> 
       <input type="file" name="photo"> 

       <br/> 
       <br/> 
       <input TYPE="submit" name="upload" title="Add data to the Database" value="Add Name"/> 
       </form> 
     </body> 
</html> 

А вот мой PHP код:

<?php 

    include_once("NewConnectProcess.php"); 

    class UploadPicture extends Connection { 
     public function doUploadData() { 
      //This is the directory where images will be saved 
      $target = "your directory"; 
      $target = $target . basename($_FILES['photo']['name']); 

      //This gets all the other information from the form 
      $name=$_POST['nameMember']; 
      $pic=($_FILES['photo']['name']); 

      //Writes the information to the database 
      $sql = "INSERT INTO dbo.pictureInfo (name,photo) 
      VALUES ('$name','$pic')" ; 

      $stmt = sqlsrv_query($this->conn, $sql); 

      //Writes the photo to the server 
      if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
       { 

       //Tells you if its all ok 
       echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
       } 
      else 
       { 

       //Gives and error if its not 
       echo "Sorry, there was a problem uploading your file."; 
       } 
      if($stmt === false) 
       { 
       echo "Statement could not be executed.\n"; 
       die(print_r(sqlsrv_errors(), true)); 
       } 
      else 
       { 
       echo "Rows affected: ".sqlsrv_rows_affected($stmt)."\n<br>"; 
       } 

      // Free statement and connection resources 
      sqlsrv_free_stmt($stmt); 
      sqlsrv_close($this->conn); 

     } 
    } 
    if(isset($_POST['upload'])){ 
     $i = new UploadPicture(); 
     $i->connectDatabase(); 
     $i->doUploadData(); 
    } 
?> 

Вот мой NewConnectProcess.php, который используется для подключения к базе данных, он работает, но я думаю, что это может помочь:

<?php 

class Connection { 

    public $conn; 

    public function connectDatabase() { 
     $serverName = "localhost"; 
     $uid = "sa"; 
     $pwd = "joseph04"; 
     $databaseName = "TestDatabase"; 

     $connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>$databaseName); 

     // Connect using SQL Server Authentication 
     $this->conn = sqlsrv_connect($serverName, $connectionInfo); 

     // Test Connection 
     if($this->conn === false) 
     { 
      echo "Connection could not be established.\n"; 
      die(print_r(sqlsrv_errors(), true)); 
     } 
    } 
} 
?> 

Вот ошибка: error

+0

Вы проверили свой стол в db? В нем говорится, что в сообщении об ошибке отсутствует столбец «фото». – Nobita

+0

У меня есть столбец в моей базе данных, который он указывает, имя столбца - это изображение с типом данных, это правильно или я должен изменить его на varchar? –

+0

Имя столбца должно быть «фото» вместо «изображения». – Nobita

ответ

0

Ошибка указала проблему. uploadedfile не определен.

echo "The file ". basename($_FILES['uploadedfile']['name']). " 

попробуйте изменить его на ['photo'].

$_FILES['photo']['name'] 
+0

первая ошибка исчезла, когда я сделал то, что вы сказали, но вторая ошибка все еще сохраняется, а именно: 'Файл dimensiondata.jpg был загружен, и ваша информация была добавлена ​​в directoryStatement не может быть выполнена. Массив ([0] => Массив ([0] => 42S22 [SQLSTATE] => 42S22 [1] => 207 [код] => 207 [2] => [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Недопустимое имя столбца 'photo'. [Message] => [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Недопустимое имя столбца 'photo'.)) ' Что мне делать? Я не знаю, что делать, спасибо заранее! –

+1

@JosephRojas Эта ошибка означает, что в таблице 'dbo.pictureInfo' нет такого имени столбца, которое называется' photo'. Вы должны тщательно проверить имена столбцов и написать ** точное ** название столбца. – alalp