我有這個變量中的數組:PHP插入一個數組作爲字符串到MySQL文本字段
$myArray;
然後,我將其插入,我有一個文本字段中輸入數據庫:
mysqli_query($con,"INSERT INTO myTable (thetextfield) VALUES ('$myArray')");
問題是我查看了表格內容,它只是說「數組」(沒有引號)。
是否沒有插入數組的方式,或者用逗號分隔它們並插入它們?
我有這個變量中的數組:PHP插入一個數組作爲字符串到MySQL文本字段
$myArray;
然後,我將其插入,我有一個文本字段中輸入數據庫:
mysqli_query($con,"INSERT INTO myTable (thetextfield) VALUES ('$myArray')");
問題是我查看了表格內容,它只是說「數組」(沒有引號)。
是否沒有插入數組的方式,或者用逗號分隔它們並插入它們?
您可以使用implode
插入因子,如:
$arrayString = implode(",", $myArray);
但是,如果一個包含,
的字符串位於$myArray
,則在轉換回數組時可能會導致意外的結果,因爲您會突然多出一個數組項。 (要將其轉換回來,您可以使用explode
)
您還可以使用json_encode
將數組編碼爲JSON。
$arrayString = json_encode($myArray);
這是更安全。 (爲了解碼回陣列使用json_decode
)
當然,你可以只序列化PHP數組:
$arrayString = serialize($myArray);
此選項的con是,輸出字符串只能通過PHP讀取,不像JSON被廣泛支持。 (unerialize
可用於字符串轉換回數組)
我會建議你使用serialize您的數組保存之前並從數據庫中檢索後再次反序列化它,
"INSERT INTO myTable (thetextfield) VALUES ('".serialize($myArray)."')"
如果你想保存逗號分隔使用破滅功能來實現這一目標,
"INSERT INTO myTable (thetextfield) VALUES ('".implode (", ", $myArray)."')"
使用implode
$newString = implode(",", $myArray);
"INSERT INTO myTable (thetextfield) VALUES ('$newString')"
您不能直接插入陣列MySQL作爲MySQL將無法識別它。
您需要使用php implode轉換數組,或者您可以使用serialize或json_encode和php ..這樣,您也可以更容易地檢索數組數據。
你應該剛剛提出了與你的想法相同的答案而不是給出另一個答案。 – 2014-08-27 09:03:57
是的,實際上當我回答這個問題時,這個問題沒有答案。 – user2798689 2014-08-27 09:14:20
通常是一個壞主意....但在序列化()插入和反序列化()在讀 – 2014-08-27 08:56:24
'implode(',',$ myArray)' – 2014-08-27 08:56:50