php-将JPEG插入SQL数据库时发出警告
我正试图使用一个简单的表单将图像上载到SQL server,但是我遇到了以下警告,这也阻止了我上载图像: 警告:odbc_exec():在C:\wamp\www\inputform\index2.php的第10行 第10行: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\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)
让我们看看。