Не удается загрузить фотографию в базу данных MS с помощью PHP

#php #html #sql-server #image #sqlsrv

#php #HTML #sql-сервер #изображение #sqlsrv

Вопрос:

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

Вот мой 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));
        }
    }
}
?>
  

Вот ошибка:
ошибка

Комментарии:

1. Вы проверили свою таблицу в БД? В сообщении об ошибке говорится, что в столбце «фото» нет.

2. В моей базе данных есть столбец, на который он указывает, имя столбца — picture с типом данных image, это правильно или я должен изменить его на varchar?

3. Имя столбца должно быть «photo» вместо «picture».

Ответ №1:

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

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

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

 $_FILES['photo']['name']
  

Комментарии:

1. первая ошибка исчезла, когда я сделал то, что вы сказали, но вторая ошибка все еще сохраняется: The file dimensiondata.jpg has been uploaded, and your information has been added to the directoryStatement could not be executed. Array ( [0] => Array ( [0] => 42S22 [SQLSTATE] => 42S22 [1] => 207 [code] => 207 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid column name 'photo'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid column name 'photo'. ) ) что мне делать? Я не знаю, что делать, заранее спасибо!

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