【问题标题】:How do I store an php object in a MySQL table?如何将 php 对象存储在 MySQL 表中?
【发布时间】:2011-06-30 13:58:01
【问题描述】:

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

mysql_query("INSERT INTO objects (inquery) VALUES($inquery)");

【问题讨论】:

    标签: mysql object php


    【解决方案1】:

    Serialize它:

    $str = serialize($object);
    

    如果您的对象包含私有/受保护字段,那么base64_encode() 序列化对象也是一个好主意,因为这些属性将导致使用 ascii-1 字符,这会在手动编辑列时中断,例如使用 phpMyAdmin..

    要恢复您的对象,您只需 unserialize() 字符串(如果需要,请在前面加上 base64_decode())。

    【讨论】:

    • 那么当我在它被存储后去从桌子上抓取它时,我如何将它转换回一个对象?
    • $object = unserialize($str);
    • 请注意,并非所有 php 对象都可以序列化。资源(db 连接、http 连接等)不能。见php.net/manual/en/function.serialize.php
    • @contagious 不用担心,这是我自己创建的一个简单的对象。
    【解决方案2】:

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

    【讨论】:

    • 当 json_decoding 对象将是一个 stdClass 对象
    • 抱歉回复晚了,但是您可以将 true 添加到第二个参数中,例如 json_decode($json, true);
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2019-03-09
    • 2019-12-26
    • 2021-06-27
    • 2011-01-17
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多