PHP 配列を MySQL フィールドに効果的に保存および取得するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-10-29 08:25:02
オリジナル
664 人が閲覧しました

How do you effectively store and retrieve a PHP array in a MySQL field?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート