我的陣列看起來像這樣:如何在MySQL數據庫中存儲嵌套/多維數組中的值?
Array
(
[0] => Array
(
[created_at] => Sat Jun 25 21:22:20 +0000 2011
[text] => i'm eating apple
[sender] => Array
(
[name] => mark o
[created_at] => Wed May 28 18:21:03 +0000 2008
)
[recipient] => Array
(
[created_at] => Mon Jun 21 19:48:50 +0000 2010
[screen_name] => playassassin
)
[sender_screen_name] => mark
[recipient_screen_name] => james
)
[1] => Array
(
[created_at] => Mon Jun 20 10:52:37 +0000 2011
[text] => My bday in 5 minutes
[sender] => Array
(
[name] => mark o
[created_at] => Wed May 28 18:21:03 +0000 2008
)
[recipient] => Array
(
[created_at] => Mon Jun 21 19:48:50 +0000 2010
[screen_name] => james
)
[sender_screen_name] => mark
[recipient_screen_name] => james
)
)
這是從微博API直接消息進料的簡化版本。我會每隔X分鐘使用PHP和Twitter異步庫請求最新的DM,然後我想將數組的一部分存儲在數據庫表中。每個DM應該存儲在自己的行中。
數據將被存儲在表:
CREATE TABLE `dms` (
`postid` INT(12) NOT NULL,
`text` VARCHAR(140) NOT NULL COLLATE 'utf8_unicode_ci',
`sender` VARCHAR(20) NOT NULL COLLATE 'utf8_unicode_ci',
`sender_id` VARCHAR(20) NOT NULL COLLATE 'utf8_unicode_ci',
`date_created` DATETIME NOT NULL
)
我真的不知道如何去這樣做的,將不勝感激一些幫助。
如果它簡化了所有事情,我只需要從第二層中提取值。另外,我不知道要添加多少行。
我一直在瞎搞,這幾乎代碼做什麼,我需要:
foreach ($adms as $dm) {
foreach ($dm as $key => $value) {
$q = "INSERT INTO dms SET text = '{$value}'";
mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
}
}
當然,這只是存儲在「文本」列在新行中的每個二級值。如果你能幫我完成我所要求的事情,我會標記你的答案。
原油的方法是使用序列化() – 2011-06-28 09:14:27
也許這類似的問題將幫助別人設計一個答案:[鏈接](http://stackoverflow.com/questions/4485255/insert-unknown-number-of-rows-into-mysql-using-php) – David
也許我可以用這種方式表達我認爲我需要的東西:對於每個第一級數組,我想向表中添加一行用第二級數組中的特定值直到所有第一級數組都被處理。 – David