#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
. Вы должны тщательно проверять имена столбцов и писать точное название столбца.