2011-12-23 7 views
12

mysqlデータベースにデータを保存しています。このデータは配列であり、コンテンツは現在のユーザーのシステムにログインしている別のデータです。私は、データベースに保存するときデータベースからの取得時にシリアライズされた配列が破損する

私は次の操作を行います。その後、

$data = addslashes(serialize($array)); 

"UPDATE or INSERT INTO TABLE SET ... data = '$data';" 

挿入または更新文は私のPHPコードから有効な返すために、データが正しく保存されています。

私の問題は、私がそれをシリアル化しようとすると、それはfalseを返し、私のページに通知が表示されます。

私は間違っていますか?

+0

データのシリアル化を解除するコードと、取得したエラーを投稿することができますか。 – Nonym

+0

通知には何が表示されますか? –

答えて

23

私はあなたのmysqlデータベースのフィールドがすべての文字を保存するのに十分な大きさではないと確信しています。そのため、あなたがそれをシリアル化していないときに、あなたは通知を受け取り、何も返されません。

ALTER TABLE your_table MODIFY COLUMN column_name MEDIUMTEXT /* other properties*/; 

をして保存し、再度データを読み取ろう:

は、この様またはLONGBLOBまたはLONGTEXTMEDIUMBLOBまたはMEDIUMTEXT(16777215の最大長)(4,294,967,295の最大長)にフィールドを増やすようにしてください。

データが4,294,967,295(LONGBLOBまたはLONG​​TEXT)を超える場合は、保存しているデータの種類を確認し、不要なデータをフィルタリングまたは削除する必要があります。

0

テーブルからデータを取得した後、unserialize機能の前にスラッシュを削除していますか?

addslashes()を付けずに挿入し、スラッシュを追加してから配列に挿入してください。

関連する問題