Mysql不存储blob列数据

时间:2014-11-14 21:36:02

标签: php mysql oop blob

我有一个奇怪的问题,我无法弄清楚,任何帮助将不胜感激!。

问题是我正在尝试将对象存储到mysql数据库中,当我执行插入命令时,我成功运行,但是当我检查表时,所有列都有新插入的数据,期望该列具有Blob数据类型。

这是表格

CREATE TABLE `uc_opportunities` (
 `post_id` int(11) NOT NULL AUTO_INCREMENT,
 `org_id` int(11) DEFAULT NULL,
 `dateTime` int(11) NOT NULL,
`subject` varchar(200) NOT NULL,
`text` varchar(2000) DEFAULT NULL,
`zipcode` varchar(10) NOT NULL,
`location` varchar(100) DEFAULT NULL,
`schedule` blob NOT NULL,
PRIMARY KEY (`post_id`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8;

这是插入功能:

public function addOpportunity($org_id)
{
    global $mysqli,$emailActivation,$websiteUrl,$db_table_prefix; // 

    echo "inside add opportunity<br>";
    var_dump($this->schedule);

    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."opportunities (
        org_id,
        dateTime,
        subject,
        text,
        zipcode,
        schedule
        )
        VALUES (
        ?,
        ?,
        ?,
        ?,
        ?,
        ?
        )");

    $schedule_serialized = serialize($this->schedule);      
    $stmt->bind_param("iissib", $org_id, $this->dateTime, $this->subject,$this->postText, $this->zipcode, $schedule_serialized );
    $result = $stmt->execute();

    echo "execution result ".$result."<br>";
    $inserted_id = $mysqli->insert_id;
    $stmt->close();

    $this->post_id = $inserted_id;

    }

插入除计划之外的所有列,我检查插入功能是否使用var_dump($ this-&gt; schedule)正确接收计划并且它是正确的。您认为可能是什么问题?

谢谢

2 个答案:

答案 0 :(得分:0)

请参阅mysqli文档,参考保存blob数据和max_allowed_pa​​cket的mysql配置。这可能是您的问题,因为我不知道您的序列化数据有多大:

php.net mysqli

答案 1 :(得分:0)

首先,将数据(如果是图像,音频,文档等)更改为二进制文件并将计划列更改为longBlob然后运行插入命令。有些时候由于更大的二进制数据插入而无法工作。所以试一试< / p>