2011-07-07 197 views
1

我想以格式a,b,c將數組插入到我的MySQL數據庫中。在MySQL數據庫中插入數組

`var_dump($pvt_contacts)` 

導致

array(1) { [0]=> array(2) { [0]=> string(3) "102" [1]=> string(1) "3" } } 

我試圖

`implode(',',$pvt_contacts)' 

但回聲陣列不是102,3如我所料。請幫我

+3

我明白你想要什麼,但我必須告訴你這是一個非常可怕的方式來做到這一點。你想要達到什麼目的?有**必須是另一種方式來做到這一點。在mySQL中存儲數組是錯誤的。 – SteeveDroz

+0

你讓我錯了Oltarus。其實我有一個數組$ pvt_contacts,我想以格式102,2,4 –

+0

插入數據庫什麼是你的查詢?我很確定我知道問題出在哪裏... – misterjinx

回答

1

如果你只是想102,3,那麼你關閉一(你指向一個父陣列,而不是元素):

implode(',',$pvt_contacts[0]); 
  • 如果你想存儲的陣列一個DB,我推薦serialize。 (儘管在Drupal,ExpressionEngine,Wordpress等流行,這通常不是最好的主意)。
  • 如果您嘗試將數組發送給js,我建議使用json_encode
  • 如果您正在做其他事情,我需要更多信息。
0

建議使用多行來存儲數據,而不是將整個數組存儲在其中。如果你堅持,這裏是這樣的:

轉換您的陣列以下格式:

[key1]{value1}#[key2]{value2}#.... etc 

您可以使用explode將其轉換回陣列。

0

最簡單的方法應該是serialize()var_export()。但是,如果您不打算以任何方式使用數據庫內的數據,則只應使用這些數據。如果你想運行例如對這個數組數據的SELECT查詢應該以規範化的方式進行存儲。

0

您可以implode您的數組轉換成字符串,然後explode回來。默認分隔符是,。如果你想運行SELECT查詢,那麼你可以使用MySQL特有的FIND_IN_SET()函數,但是這整個場景是沒有推薦,你應該使用規範化的方式,如上面提出的其他方法。

0

一種方法是將數組轉換爲JSON。它會將數組轉換爲字符串,您將能夠存儲它。

無論如何,我不認爲這是正確的方式如何處理這個問題。比方說,例如,您需要將博客條目和標籤存儲到數據庫中。

你如何知道?

將博客條目和標籤保存到一個表中,一行。您將所有條目標籤轉換並保存到數據庫中。

你應該怎麼做?

讓兩個表:

  • entries
  • entry_tags;

與條目相關的所有信息保存到entries。例如:title,description。 所有標籤保存到entry_tags。在該表中有id(主鍵),entry_id(與entries ID有關係的ID)和tag,它們只是保存名稱。

我希望這會幫助你!