gpt4 book ai didi

php - 将图像数据插入 LongBlob 字段时出现问题

转载 作者:行者123 更新时间:2023-11-29 03:45:39 25 4
gpt4 key购买 nike

这里是新手,请多多包涵。

构建一个非常小的个人应用程序,用于上传一些图像和信息。我不明白为什么以下 PHP/MySQL 没有将查询中的最后一个插入 ($file_data) 添加到我的数据库的 longblob 字段。

查询中的所有其他字段都可以正常插入,这意味着我一次测试一个,添加到查询中,直到我到达最后一个,然后插入失败。我能够在插入之前回显 $file_data 并看到数据在那里,我还发现硬编码 $file_data 的字符串值(即 $file_data="this will insert") 插入很好......这令人沮丧。

所以我猜测是在读取文件时出错($fp fread 等)或者我的 longblob 设置错误。文件大小 <16kb,所以我确定这也不是 php.ini 问题。

有什么想法吗?谢谢。

$boxtype=$_POST['type'];
$title=$_POST['title'];

if(isset($_POST['submit']) && $_FILES['imgfile']['size'] > 0)
{

$filename = $_FILES['imgfile']['name'];
$tmpName = $_FILES['imgfile']['tmp_name'];
$file_size = $_FILES['imgfile']['size'];
$mime_type = $_FILES['imgfile']['type'];

$fp = fopen($tmpName, 'r');
$file_data = fread($fp, filesize($tmpName));
fclose($fp);

$query = "INSERT INTO table
(boxtype,title,filename,mime_type,file_size,file_data)
VALUES
('$boxtype','$title','$filename','$mime_type','$file_size','$file_data')
";

$db = db_connect();
$result = $db->query($query) or die('Error, query failed');

if ($result)
{
echo "<br>Success<br>";
}
}
else die("No Content");

MySQL 表:

CREATE TABLE `port` (
`id` int(2) unsigned zerofill NOT NULL AUTO_INCREMENT,
`boxtype` tinytext COLLATE latin1_general_ci NOT NULL,
`title` varchar(40) CHARACTER SET latin1 NOT NULL,
`filename` varchar(255) COLLATE latin1_general_ci NOT NULL,
`mime_type` varchar(255) COLLATE latin1_general_ci NOT NULL,
`file_size` int(11) NOT NULL,
`file_data` longblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

最佳答案

因为它是一个二进制文件,所以它可能包含值,这意味着它可能会抛出一个摆动

尝试在 file_data 变量上使用 addslashes,这样它就可以保存它。

关于php - 将图像数据插入 LongBlob 字段时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com