我的問題是什麼是將大型php數組保存到mysql表的最好和最有效的方法。我知道有很多方法可以做到這一點,我嘗試了其中的一些方法,但我仍然沒有找到一種我真正感覺舒適的方法。大多數人推薦的主要方法是serialize()和unserialize()php函數。由於某種原因,這不適合我,我似乎已經嘗試了各種方法來解決這個問題,但idk。將PHP數組數據保存到mysql表的最佳方法
這裏是我的代碼:
// unserialize songs, add new song to end of array, and then re-serialize to add to db
$cereal = unserialize($dbsongs);
$pushed = array_push($cereal, $_GET['song']);
$songs = serialize($pushed);
//update playlists table
$stmt = $dbh->prepare("UPDATE playlists SET songs=:songs WHERE title=:title AND user=:user");
$stmt->bindParam(':user', $_SESSION['username'], PDO::PARAM_STR);
$stmt->bindParam(':title', $_GET['title'], PDO::PARAM_STR);
$stmt->bindParam(':songs', $songs, PDO::PARAM_STR);
$stmt->execute();
所以首先我反序列化 $ dbsongs這是串行數據從一個MySQL表的空白列表。然後我將 $ _GET ['song']與 array_push()。然後我序列化並將其存儲到數據庫。出於某種原因,這不起作用,但我也想知道是否有更好的方法。
我應該嘗試拆分php數組,並將每個項目保存到一個表格中,並用逗號分隔項目,並且當我從數據庫中檢索它時打破該字符串?
或者我應該修復這個方法嗎?或甚至添加 base64_decode()和 base64_encode()?這些方法似乎是從一些我看過的東西有點老... http://www.evolt.org/node/60222
我已經看到了使用 .implode的方法,但我無法弄清楚如何使用它... Link 1Link 2。這看起來像我見過的最現代的方法。這是我應該進一步研究的嗎?
不知道這個方法是什麼,但它提到CakePHP,我想是一個PHP庫。這是一個好方法嗎? Link 1
我將在這些列表中存儲大量項目(如定期超過1k個項目),所以我甚至不確定是否將這些項目保存到一個表格字段是適當的。只是爲這些項目製作表格是最好的方法,因爲列表將會變得很大(爲每個新項目添加一個新的數據庫條目,並製作一個「標題」字段以將它們鏈接在一起)?我從來沒有嘗試過這樣的事情,因爲我永遠無法找到足夠的信息,說明mysql可以在不出現問題的情況下保存多少數據。
我知道這裏有很多問題,但任何答案將不勝感激!提前致謝!
-BAH
您是否反對將*歌曲*存儲在另一個表中並創建一個橋表格(* playlist_songs *)來處理關係?這是使用關係數據庫(如MySQL)的傳統方式。 – 2011-12-31 05:15:44