2013-08-13 87 views
6

、照合はこのMySQL DBにbase64でエンコードされた値を保存する最も良い方法は?私は私が私のDBに格納したい値を持つ

YToyOntzOjIwOiJUeXBlX29mX29yZ2FuaXNhdGlvbiI7czoyMDoiTWVtYmVyIG9mIFBhcmxpYW1lbnQiO3M6ODoiUG9zdGNvZGUiO3M6NzoiUEUxIDFKQSI7fQ== 

のような文字列が保存されるかもしれない方法任意の違いを作るのですか?また、私はこれらの値をDBに書き込むことができる唯一の方法は、BLOBを使用することです。これは実際にそれを格納する方法が間違っているようです。

+3

これは*既に* base64なので、なぜCHAR/VARCHARだけではないのですか? BINARY、VARBINARY、およびBLOBは、(ベース64エンコードされていない)バイナリデータの格納に適しています。それは小さな値であるように見えるので、私はBINARY対BLOBを提案します。 – user2246674

+0

鮮やかな、何らかの理由で私はバイナリを使用するとは思わなかった! :) –

+0

ああ、たまに私はSOに投稿されたものをデコードするのが好きです。この種の構造では、特定のデータを適切に照会するのは面倒です。 – HamZa

答えて

11

ORDER BYを検索するか、列を検索する必要がある場合にのみ照合が異なります。これらのbase64でエンコードされた項目はおそらく検索またはソートされません。

あなたのエンコードされたアイテムは、長さ未満64Kバイトであることが保証されている場合は、このようなあなたの列を定義します。

`columnname` TEXT CHARACTER SET ascii, 

これは、変数をbase64エンコードするために必要なのは、まさにです。エンコーディングプロセスはすべてを表示可能なASCIIに変換します。

アイテムの長さが16メガバイト未満で、長さが64キロバイトを超える場合は、TEXTの代わりにMEDIUMTEXTを使用します。

年後に編集します。

OQエンコードされた文字列、デコード、シリアライズされたPHPオブジェクトです:

a:2:{s:20:"Type_of_organisation";s:20:"Member of Parliament";s:8:"Postcode";s:7:"PE1 1JA";} 

観察1:このようなものの多くは、UTF8またはutf8mb4文字セットを使用して、それをコードすることなく、テキスト列に格納されます。たくさん?はい。 WordPressはオプションデータをこのように保存します。

観測2:JSONに変換できる場合は、最近のバージョンのMySQLでJSONデータ型を使用できます。 JSON検索は依然として可能ではありませんが、構造化されています。

関連する問題