在MySQL 中儲存陣列:另一種方法
如何在單一MySQL 欄位中保存資料數組的問題長期以來一直令人困惑開發商。雖然serialize()和unserialize()可以提供解決方案,但它犧牲了可查詢性。
檢查關聯式資料
在MySQL中儲存陣列的最佳方法在於檢查關聯式資料並相應地修改架構。不要嘗試將數組填入單一欄位中,而是考慮建立一個可以容納數組內容的表。
範例表結構
例如,假設我們有一個嵌套數組的數組:
$a = array( 1 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), 2 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), );
在這種情況下,我們將創建一個像this:
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) );
插入和擷取記錄
要將陣列儲存在表中,我們可以使用插入查詢:
foreach ($t as $k => $v) { $query = "INSERT INTO test (id," . implode(',', array_keys($v)) . ") VALUES ($k," . implode(',', $v) . ")"; $r = mysql_query($query,$c); }
要檢索記錄,我們可以使用選擇查詢:
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; }
這個方法可以輕鬆查詢和操作資料庫中的陣列資料。
以上是如何在MySQL中有效率地儲存和查詢數組資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!