2014-04-15 23 views
7

JSON verilerini (PHP'de bilinmeyen uzunlukta oldukça fazla bir dizi) bir sütunda saklamak istiyorum. Bunu örnek olarak kullanalım ...MariaDB Dinamik Sütunlar & JSON?

Ne tür sporlardan hoşlandığınızı soran bir alanım var (ve bir onay kutusu). Sonra PHP sports[] dizisi aracılığıyla gönderilecek

[] Soccer 
[] Hockey 
[] Football 
[] Swimming 

. ben o zaman belki

SELECT COUNT(*) FROM fields WHERE hockey = "false"; 

gidebiliriz Ve anlamaya görünüyor olamaz böyle

|sports|{hockey:false,swimming:true,football:false,soccer:true}| 

Ya bir şey gibi görünüyor bu yüzden o zaman bunu al ve benim veritabanına eklemek istediğiniz Bunu düzgün bir şekilde yapmak için, bu "örnek" aslında kolayca yapılabildiği gerçeğini görmezden geliyorum mariadb dinamik sütunlar kullanarak yapmak istiyorum (en azından ben istediğime inanıyorum). Postgre'yi kullanarak bunu yapabileceğimi biliyorum.

cevap

7

Hepsi burada:

dinamik kolonlar https://mariadb.com/kb/en/dynamic-columns/ Böyle gerçek blob sütunda içinde saklanır ve eklenen:

insert into data 
values (data_id, user_id, COLUMN_CREATE(<dcolumn1>, <value1>, <dcolumn2>, <value2>, ...)); 

Yani onun yerine Veriler bu şekilde seri, burada json kullanmak ister:

$dynamic = array() 
foreach($_POST['sports'] as $sport) { 
    $dynamicData[] = "'" . $sport . "'", TRUE; 
} 
$dynamicColumn = join(', ', $dynamicData); 

gibi bir şey üretecektir

... where COLUMN_GET(dynamic_blob, 'soccer' as soccer) = TRUE; 
:

'hockey', TRUE, 'soccer', TRUE 
futbol oynarken ppl için tüm satırları aramak için
İlgili konular