2015-06-18 4 views
1

Я пытаюсь загрузить изображение на SQL-сервер, используя простую форму, однако я сталкиваюсь со следующим предупреждением, которое также не позволяет мне загружать изображение:php - предупреждение при вставке JPEG в базу данных SQL

Предупреждение: odbc_exec(): в C: \ WAMP \ WWW \ inputform \ index2.php на линии 10

Line 10: $sql_run = odbc_exec($con, $sql);

код:

<?php 

require ('connect.inc.php'); 

    if(ISSET($_POST['submit'])){ 
      $imagename = $_FILES["image"]["name"]; 
      $imagedata = file_get_contents($_FILES["image"]["tmp_name"]); 
      echo $imagename." ".$imagedata; 
      $sql = "INSERT INTO test.dbo.images (imageid, imagedata) VALUES('','$imagedata')"; 
      $sql_run = odbc_exec($con, $sql); 
       echo "Query with the following details has been executed: <br>".$imagename; 


    } 
    else{ 
     echo 'Is not set'; 
    } 
?> 
<form action="index2.php" method="POST" enctype="multipart/form-data"> 
    Image: <input type="file" name="image"><br> 
    <input type="submit" value="Submit" name="submit"> 
</form> 

Файл connect.inc.php состоит из кода ниже:

<?php 
$serverName="TESTSERV\SQLEXPRESS"; 
$dsn='odbc-test'; 
$user = 'user'; 
$password = 'password'; 
$db = 'test'; 
if(!$con = odbc_connect($dsn, $user, $password)){ 
    echo "Not Connected"; 
} 
?> 

Спасибо заранее. J

+0

Ваше название вводит в заблуждение (в отличие с описанием). Я не уверен, что он извлекает что-либо из базы данных. –

+0

@PlatinumIndustries: Спасибо за это. Виноват. Исправлено. Вернемся к вопросу, пожалуйста: – joebegborg07

+1

Вы можете размещать типы данных 'imageid' и' imagedata' из базы данных, строки или intager или varchar. –

ответ

0

Запрос выглядит хорошо, поэтому единственное логическое объяснение заключается в том, что типы данных, которые вы пытаетесь вставить, не совпадают. Убедитесь, что типы данных и imagedata: varchar

EDIT: Убедитесь, что эти типы данных одинаковы. вот обновленный ответ.

<?php 

require ('connect.inc.php'); 

if(ISSET($_POST['submit'])){ 
     $imagename = $_FILES["image"]["name"]; 
     $imagedata = (binary)file_get_contents($_FILES["image"]["tmp_name"]); 
     echo $imagename." ".$imagedata; 
     $sql = "INSERT INTO test.dbo.images (imageid, imagedata) VALUES('','.$imagedata.')"; 
     $sql_run = odbc_exec($con, $sql); 
      echo "Query with the following details has been executed: <br>".$imagename; 


} 
else{ 
    echo 'Is not set'; 
} 

>

примечание: $imagedata = (binary)file_get_contents($_FILES["image"]["tmp_name"]);

+0

Спасибо за ваш ответ @Platinum Industries. К сожалению, я все еще был вызван тем же предупреждением. Типы изображений: ** image ** id: varchar и ** imagedata **: varbinary (8000) – joebegborg07

+1

'imagedata' является виновником. попробуйте добавить его в двоичный файл перед вставкой. i.e '$ imagedata = (binary) file_get_contents ($ _ FILES [" image "] [" tmp_name "]);', я отредактировал свой ответ. –

+0

Еще с ошибкой. Я не вижу ничего плохого в синтаксисе. Не могу понять, в чем проблема. – joebegborg07

Смежные вопросы