MySQL での PHP 配列の保存と取得
質問:
どうすれば効果的に配列を保存および取得できますか?単一の MySQL フィールド内のデータの配列?
答え:
配列データの保存:
単一の MySQL フィールドへの配列の保存リレーショナル データの整合性が損なわれるため、お勧めできません。配列データに対応できるようにスキーマを調整することをお勧めします。
シリアル化とシリアル化解除の使用:
配列を 1 つのフィールドに保存する必要がある場合は、次を使用できます。 Serialize() 関数と unserialize() 関数。ただし、このアプローチでは、格納された配列に対して直接クエリを実行する機能が制限されます。
JSON エンコードとデコード:
代わりに、json_encode() と json_decode の使用を検討できます。 () 配列データを格納および取得します。このメソッドを使用すると、JSON 形式のデータをテキスト フィールドに保存し、配列形式に変換し直すことができます。
リレーショナル スキーマ変更の例:
次のことを考慮してください。 array:
$a = [ 1 => ['a' => 1, 'b' => 2, 'c' => 3], 2 => ['a' => 1, 'b' => 2, 'c' => 3], ];
この配列をリレーショナル データベースに保存するには、次の構造を持つテーブルを作成できます:
CREATE TABLE test ( id INTEGER UNSIGNED NOT NULL, a INTEGER UNSIGNED NOT NULL, b INTEGER UNSIGNED NOT NULL, c INTEGER UNSIGNED NOT NULL, PRIMARY KEY (id) );
シリアル化とシリアル化解除の例:
<code class="php">function saveArray($array) { $serializedArray = serialize($array); $query = "INSERT INTO test_table (data) VALUES ('$serializedArray')"; // Execute the query and save the array } function getArray() { $query = "SELECT data FROM test_table"; // Execute the query $serializedArray = mysql_fetch_row($result)[0]; $unserializedArray = unserialize($serializedArray); return $unserializedArray; }</code>
JSON エンコードとデコードの例:
<code class="php">function saveArrayJSON($array) { $jsonEncodedArray = json_encode($array); $query = "INSERT INTO test_table (data) VALUES ('$jsonEncodedArray')"; // Execute the query and save the array } function getArrayJSON() { $query = "SELECT data FROM test_table"; // Execute the query $jsonEncodedArray = mysql_fetch_row($result)[0]; $decodedArray = json_decode($jsonEncodedArray, true); return $decodedArray; }</code>
以上がPHP 配列を MySQL フィールドに効果的に保存および取得するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。