为了账号安全,请及时绑定邮箱和手机立即绑定

将PHP数组保存到MySQL吗?

将PHP数组保存到MySQL吗?

达令说 2019-11-11 10:30:54
什么是将数据数组保存到单个mysql字段的好方法?同样,一旦我在mysql表中查询该数组,又有什么好方法可以将其恢复为数组形式?是序列化和反序列化答案吗?
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

没有好的方法可以将数组存储到单个字段中。


您需要检查您的关系数据并对模式进行适当的更改。请参阅下面的示例以获取对此方法的参考。


如果必须将数组保存到单个字段中,则serialize()and unserialize()函数可以解决问题。但是您不能对实际内容执行查询。


作为序列化功能的替代方法,还有 json_encode()和json_decode()。


考虑以下数组


$a = array(

    1 => array(

        'a' => 1,

        'b' => 2,

        'c' => 3

    ),

    2 => array(

        'a' => 1,

        'b' => 2,

        'c' => 3

    ),

);

要将其保存在数据库中,您需要创建一个这样的表


$c = mysql_connect($server, $username, $password);

mysql_select_db('test');

$r = mysql_query(

    'DROP TABLE IF EXISTS test');

$r = mysql_query(

    'CREATE TABLE test (

      id INTEGER UNSIGNED NOT NULL,

      a INTEGER UNSIGNED NOT NULL,

      b INTEGER UNSIGNED NOT NULL,

      c INTEGER UNSIGNED NOT NULL,

      PRIMARY KEY (id)

    )');

要使用记录,您可以执行诸如此类的查询(是的,请注意,请注意!)


function getTest() {

    $ret = array();

    $c = connect();

    $query = 'SELECT * FROM test';

    $r = mysql_query($query,$c);

    while ($o = mysql_fetch_array($r,MYSQL_ASSOC)) {

        $ret[array_shift($o)] = $o;

    }

    mysql_close($c);

    return $ret;

}

function putTest($t) {

    $c = connect();

    foreach ($t as $k => $v) {

        $query = "INSERT INTO test (id,".

                implode(',',array_keys($v)).

                ") VALUES ($k,".

                implode(',',$v).

            ")";

        $r = mysql_query($query,$c);

    }

    mysql_close($c);

}


putTest($a);

$b = getTest();

该connect()函数返回一个mysql连接资源


function connect() {

    $c = mysql_connect($server, $username, $password);

    mysql_select_db('test');

    return $c;

}


查看完整回答
反对 回复 2019-11-11
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

通常,是的,序列化和反序列化是可行的方法。


但是,如果您的数据很简单,则另存为逗号分隔的字符串可能会更好地存储空间。例如,如果您知道数组只是数字列表,则应使用爆破/爆炸。1,2,3和之间的区别a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}。


如果不是,则在所有情况下都对工作进行序列化和反序列化。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 940 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信