我有一个奇怪的问题,我无法弄清楚,任何帮助将不胜感激!。
问题是我正在尝试将对象存储到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)正确接收计划并且它是正确的。您认为可能是什么问题?
谢谢
答案 0 :(得分:0)
请参阅mysqli文档,参考保存blob数据和max_allowed_packet的mysql配置。这可能是您的问题,因为我不知道您的序列化数据有多大:
答案 1 :(得分:0)
首先,将数据(如果是图像,音频,文档等)更改为二进制文件并将计划列更改为longBlob然后运行插入命令。有些时候由于更大的二进制数据插入而无法工作。所以试一试< / p>