亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將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 關注
  • 998 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號