我是葡萄牙学生,我正在尝试实施游戏管理的网络应用程序。
表game
`game` (
`idGame` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`primaryScreen` blob NOT NULL,
`game_content` blob NOT NULL,
`category` varchar(45) NOT NULL,
`platform` varchar(45) NOT NULL,
`device` varchar(45) NOT NULL,
`description` varchar(250) NOT NULL,
`funcionalities` varchar(150) NOT NULL,
PRIMARY KEY (`idGame`)
)
`screen` (
`idScreen` int(11) NOT NULL AUTO_INCREMENT,
`id_Game` int(11) NOT NULL,
`image` longblob NOT NULL,
PRIMARY KEY (`idScreen`),
KEY `id_Game` (`id_Game`)
)
我已经阅读了如何将文件上传到数据库中的bolb的yii教程 http://www.yiiframework.com/wiki/95/saving-files-to-a-blob-field-in-the-database
唯一的区别是在保存之前的功能中我只想保留文件的内容(我可以这样做,还是我必须保留文件名,文件扩展名......) 所以我在模特中这样做:
public function beforeSave()
{
if($file=CUploadedFile::getInstance($this,'game_uploaded'))
{
// $this->file_name=$file->name;
//$this->file_type=$file->type;
//$this->file_size=$file->size;
$this->game_content=file_get_contents($file->tempName);
//$file->saveAs('path/to/uploads');
}
if($file=CUploadedFile::getInstance($this,'primscreen'))
{
//$this->file_name=$file->name;
//$this->file_type=$file->type;
//$this->file_size=$file->size;
$this->primaryScreen=file_get_contents($file->tempName);
//$file->saveAs('path/to/uploads');
}
return parent::beforeSave();
}
但是当我尝试我有这个错误时:
PDOStatement::execute(): MySQL server has gone away
有人可以帮我吗?
我很感激任何建议。谢谢:))
答案 0 :(得分:0)
在您的配置文件中
尝试将其主机从“localhost”更改为“127.0.0.1”
答案 1 :(得分:0)
在保存到数据库之前尝试使用base64_encode
Bom trabalho!
答案 2 :(得分:0)
MySQL server has gone away
的一个常见原因是因为超时。尽量增加default_socket_timeout
:
ini_set('default_socket_timeout', 300);
另一个可能是blob的大小。尝试在php.ini
post_max_size
upload_max_filesize