php-将JPEG插入SQL数据库时发出警告

php-将JPEG插入SQL数据库时发出警告,php,sql,Php,Sql,我正试图使用一个简单的表单将图像上载到SQL server,但是我遇到了以下警告,这也阻止了我上载图像: 警告:odbc_exec():在C:\wamp\www\inputform\index2.php的第10行 第10行:$sql\u run=odbc\u exec($con,$sql) 代码是: <?php require ('connect.inc.php'); if(ISSET($_POST['submit'])){ $imagename = $

我正试图使用一个简单的表单将图像上载到SQL server,但是我遇到了以下警告,这也阻止了我上载图像:

警告:odbc_exec():在C:\wamp\www\inputform\index2.php的第10行

第10行:
$sql\u run=odbc\u 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>

查询看起来不错,因此唯一合乎逻辑的解释是您尝试插入的数据类型不同。确保
imageid
imagedata
数据类型为
varchar

编辑:确保数据类型相同。以下是最新的答案

<?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';
}

查询看起来不错,因此唯一合乎逻辑的解释是您尝试插入的数据类型不同。确保
imageid
imagedata
数据类型为
varchar

编辑:确保数据类型相同。以下是最新的答案

<?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';
}

你的标题有误导性(与你的描述相反)。我不确定它是否能从数据库中检索到任何东西……@PlatinumIndustries:谢谢。我的错误。现在修好了。请回到问题:)你能从数据库中发布
imageid
imagedata
的数据类型吗,它们是字符串、intager还是varchar.image id:varchar和imagedata:varbinary(8000)你的标题有误导性(与你的描述相反)。我不确定它是否能从数据库中检索到任何东西……@PlatinumIndustries:谢谢。我的错误。现在修好了。请回到问题:)你能从数据库中发布
imageid
imagedata
的数据类型吗,它们是字符串、intager还是varchar.image id:varchar和imagedata:varbinary(8000)你的标题有误导性(与你的描述相反)。我不确定它是否能从数据库中检索到任何东西……@PlatinumIndustries:谢谢。我的错误。现在修好了。请回到问题:)您能从数据库中发布
imageid
imagedata
的数据类型吗,是字符串还是intager还是varchar。image id:varchar和imagedata:varbinary(8000)感谢您的回复@Platinum Industries。不幸的是,我仍然收到同样的警告信息。图像类型是image id:varchar和imagedata:varbinary(8000)
imagedata
是罪魁祸首。尝试在插入之前将其强制转换为二进制。i、 e
$imagedata=(二进制)文件获取内容($\u文件[“图像”][“tmp\u名称])
,我已经编辑了我的答案。您正在尝试插入数据类型为“string”的imagedata,而不是您在数据库中设置的
varbinary
,请先将其转换为二进制,然后再在
odbc_exec()
中使用它。您可以尝试回显此内容并告诉我它给出了什么
echo gettype($imagedata)
让我们看看。感谢您的回复@Platinum Industries。不幸的是,我仍然收到同样的警告信息。图像类型是image id:varchar和imagedata:varbinary(8000)
imagedata
是罪魁祸首。尝试在插入之前将其强制转换为二进制。i、 e
$imagedata=(二进制)文件获取内容($\u文件[“图像”][“tmp\u名称])
,我已经编辑了我的答案。您正在尝试插入数据类型为“string”的imagedata,而不是您在数据库中设置的
varbinary
,请先将其转换为二进制,然后再在
odbc_exec()
中使用它。您可以尝试回显此内容并告诉我它给出了什么
echo gettype($imagedata)
让我们看看。感谢您的回复@Platinum Industries。不幸的是,我仍然收到同样的警告信息。图像类型是image id:varchar和imagedata:varbinary(8000)
imagedata
是罪魁祸首。尝试在插入之前将其强制转换为二进制。i、 e
$imagedata=(二进制)文件获取内容($\u文件[“图像”][“tmp\u名称]),我已经编辑了我的答案。您正在尝试插入数据类型为“字符串”的imagedata,而不是您在数据库中设置的
varbinary
,请先将其转换为二进制,然后再在
odbc\u exec()
中使用它。您可以尝试回显此内容并告诉我它给出了什么
echo gettype($imagedata)
让我们看看。