如何将PHP对象存储到MySQL表中?

11

我设置了一个只有一个BLOB字段的表,但是当我尝试将其插入到表中时,它会抛出一个错误,指出无法将对象转换为字符串。这是我的查询:

mysql_query("INSERT INTO objects (inquery) VALUES($inquery)");
2个回答

28

序列化它:

$str = serialize($object);

如果您的对象包含私有/受保护字段,建议对序列化对象进行base64_encode()处理,因为这些属性将导致使用ascii-1字符,手动编辑该列(例如使用phpMyAdmin)时会出现错误。
要恢复对象,只需unserialize()字符串即可(如果需要,请先进行base64_decode()处理)。

1
那么当我从存储在表中的数据中获取它时,如何将其转换回对象? - nkcmr
2
$object = unserialize($str); - tdammers
5
请注意,不是所有的 PHP 对象都可以被序列化。资源(如数据库连接、HTTP 连接等)是不能被序列化的。请参考 http://www.php.net/manual/en/function.serialize.php。 - helloandre
1
@contagious 没问题,这是我自己创建的一个非常简单的对象。 - nkcmr

2

在将对象保存到Mysql之前使用json_encode对其进行编码,然后使用json_decode对其进行解码。


当进行json解码时,对象将是一个stdClass对象。 - Samuel Auger
1
抱歉回复晚了,但您可以将 true 添加到第二个参数中,就像这样:json_decode($json, true); - Mohamed Auf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接