ベスト プラクティス: リレーショナル データ ストレージと PHP 配列の処理
単一の MySQL フィールド内に配列を格納することは、通常推奨されません。代わりに、データ モデルを分析し、それに応じて再構築することをお勧めします。ただし、配列を 1 つのフィールドに保存する必要がある場合は、次のオプションを検討してください:
シリアル化とアンシリアル化:
serialize() および unserialize() PHP の使用関数は配列を文字列に変換し、MySQL フィールドに保存できます。ただし、配列内の特定のコンテンツに対してクエリを実行することはできません。
JSON エンコードとデコード:
あるいは、json_encode() を使用することもできます。および json_decode() 関数。これらの関数は、データをシリアル化およびシリアル化解除するための、より現代的で構造化されたアプローチを提供します。
次の配列について考えてみましょう:
$a = array( 1 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), 2 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), );
データベースのストレージと操作を最適化するには、データ モデルを再構築する必要があります。配列内のキーと値のペアごとに個別の列を含むテーブルを作成します。たとえば、
DROP TABLE IF EXISTS test; 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) );
PHP 関数を使用してデータベースと対話できます。
// Connect to the database $c = mysql_connect($server, $username, $password); mysql_select_db('test'); // Example functions to interact with the database function getTest() { $ret = array(); $query = 'SELECT * FROM test'; $r = mysql_query($query,$c); while ($o = mysql_fetch_array($r,MYSQL_ASSOC)) { $ret[array_shift($o)] = $o; } mysql_close($c); return $ret; } function putTest($t) { foreach ($t as $k => $v) { $query = "INSERT INTO test (id,". implode(',',array_keys($v)). ") VALUES ($k,". implode(',',$v). ")"; $r = mysql_query($query,$c); } mysql_close($c); } // Insert the array into the database putTest($a); // Retrieve the data from the database $b = getTest();
を採用することで、リレーショナル データ モデルを使用すると、データの効率的なストレージ、クエリ、操作を確保できます。
以上がPHP 配列をリレーショナル データベースに保存および管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。