2014-08-27 48 views
0

我有這個變量中的數組:PHP插入一個數組作爲字符串到MySQL文本字段

$myArray; 

然後,我將其插入,我有一個文本字段中輸入數據庫:

mysqli_query($con,"INSERT INTO myTable (thetextfield) VALUES ('$myArray')"); 

問題是我查看了表格內容,它只是說「數組」(沒有引號)。

是否沒有插入數組的方式,或者用逗號分隔它們並插入它們?

+1

通常是一個壞主意....但在序列化()插入和反序列化()在讀 – 2014-08-27 08:56:24

+0

'implode(',',$ myArray)' – 2014-08-27 08:56:50

回答

4

您可以使用implode插入因子,如:

$arrayString = implode(",", $myArray); 

但是,如果一個包含,的字符串位於$myArray,則在轉換回數組時可能會導致意外的結果,因爲您會突然多出一個數組項。 (要將其轉換回來,您可以使用explode

您還可以使用json_encode將數組編碼爲JSON。

$arrayString = json_encode($myArray); 

這是更安全。 (爲了解碼回陣列使用json_decode

當然,你可以只序列化PHP數組:

$arrayString = serialize($myArray); 

此選項的con是,輸出字符串只能通過PHP讀取,不像JSON被廣泛支持。 (unerialize可用於字符串轉換回數組)

1

我會建議你使用serialize您的數組保存之前並從數據庫中檢索後再次反序列化它,

"INSERT INTO myTable (thetextfield) VALUES ('".serialize($myArray)."')" 

如果你想保存逗號分隔使用破滅功能來實現這一目標,

"INSERT INTO myTable (thetextfield) VALUES ('".implode (", ", $myArray)."')" 
1

使用implode

$newString = implode(",", $myArray); 
"INSERT INTO myTable (thetextfield) VALUES ('$newString')" 
0

您不能直接插入陣列MySQL作爲MySQL將無法識別它。

您需要使用php implode轉換數組,或者您可以使用serialize或json_encode和php ..這樣,您也可以更容易地檢索數組數據。

+0

你應該剛剛提出了與你的想法相同的答案而不是給出另一個答案。 – 2014-08-27 09:03:57

+0

是的,實際上當我回答這個問題時,這個問題沒有答案。 – user2798689 2014-08-27 09:14:20

相關問題