2011-04-15 46 views
2

雖然我以前在其他上下文中使用過SQL數據庫,但我對MySQL很陌生。我有一個測試網站,它有一個可以訪問phpMyAdmin的在線cPanel。我試圖建立一個MySQL數據庫,到目前爲止它工作正常(我可以連接到數據庫表)。在phpMyAdmin中存儲數組(雙打)

我遇到的唯一問題是插入數據。我想插入一個整列(具體來說,該數組將是一個double[])。在查看phpMyAdmin中可用的列類型之後,它似乎不支持插入二進制數組以外的數組。

我發現了很多以編程方式插入數組的方案,包括this線程,但是對於本站我們將通過在線cPanel插入數據。有沒有辦法做到這一點?

+0

的喲使用的是什麼語言? – ohmusama 2011-04-15 00:17:34

+0

該語言與問題無關.. – Snailer 2011-04-15 00:46:20

回答

0

如果你想訪問這些數據,並希望能夠使用在你的double []中搜索SQL的能力,你應該這樣做:

首先,你應該花一些時間研究關係數據庫。它們允許您創建鏈接的數據。

每個關係數據庫的一個重要組成部分是使用良好的密鑰。關鍵字是行的唯一標識符,允許您以有效的方式訪問該行上的數據。

關係數據庫的另一個重要部分是索引。索引不要求是唯一的。但是,如果你試圖在它們上面搜索,那麼它就很有用(SQL根據一列或一組列來創建表的「索引」)

如果你想創建一個具有double []數組的表,您可以改爲創建與第一個表主鍵相關的第一個表。

CREATE TABLE base (
    base_id INT AUTO_INCREMENT, 
    name VARCHAR(32), 
    PRIMARY KEY(base_id) 
); 

CREATE TABLE darray (
    base_id INT, 
    data DOUBLE, 
    INDEX(base_id) 
); 

來獲取信息背出你想要的,你可以使用一個JOIN聲明選擇。如果你想獲得所有在BASE_ID爲3的信息,你會寫它像這樣:

SELECT * FROM base 
    JOIN darray ON darray.base_id = base.base_id 
WHERE base.base_id = 3; 

與混疊寫這個的高級形式

SELECT * FROM base b 
    JOIN darray d ON d.base_id = b.base_id 
WHERE b.base_id = 3; 

如果你不」我希望能夠訪問數據,但只是回想一下,你應該這樣做:(雖然這是有爭議的,但我仍然推薦上述方法,如果你願意學習更多的SQL)

我假設你w生病是使用PHP,我們將串行數據(見:http://php.net/manual/en/function.serialize.php

報告中,我們將沒有darray表,而是添加

data BLOB 

基表。

與PHP插入序列數據

<?php 
$serializedData = serialize($darray); 
$result = mysql_query("INSERT INTO base (name, data) VALUES('a name', '$serializedData ')"); 

獲取序列化的數據

<?php 
$result = mysql_query("SELECT data FROM base WHERE base_id=3"); 
if($result && mysql_affected_rows($result) > 0) { 
    $serializedData = mysql_result($result, 0, 'data'); 
    $darray = unserialize($serializedData); 
} 
+0

雖然這個答案沒有真正解決這個問題,但這是我最終會做的。謝謝您的幫助! – Snailer 2011-04-17 16:02:20

0

您可以導入帶有.sql文件的表格的數據(基本上只是一個充滿插入查詢的文件),但phpMyAdmin不支持插入任意數據類型的數據。如果你想在表格中插入一個double[]數組作爲多行,你需要採取一種類似於你鏈接的線程的方法。

(請注意,你總是可以寫這樣的程序產生一個.sql文件,你再使用部署的明確目的。)

+0

我不認爲他想「導入」,而是「插入」 – ohmusama 2011-04-15 00:32:48

+0

「我正在嘗試設置MySQL數據庫。」不過,這一點在學術上有所不同。 – 2011-04-15 00:36:28

+0

足夠公平,我只是讀「設置」作爲一個架構來存儲他的數據。 – ohmusama 2011-04-15 00:41:55