ホームページ >データベース >mysql チュートリアル >MySQL で配列データを効率的に保存およびクエリするにはどうすればよいですか?
MySQL への配列の保存: 代替アプローチ
単一の MySQL フィールドにデータの配列を保存する方法の問題は、長い間困惑していました。開発者。 Serialize() と unserialize() は解決策を提供する可能性がありますが、クエリ性が犠牲になります。
リレーショナル データの調査
MySQL に配列を格納する最良のアプローチは、調査することです。リレーショナル データを取得し、それに応じてスキーマを変更します。配列を 1 つのフィールドに詰め込む代わりに、配列の内容を収容できるテーブルを作成することを検討してください。
テーブル構造の例
たとえば、次のようにするとします。ネストされた配列の配列がある:
$a = array( 1 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), 2 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), );
この場合、次のようなテーブルを作成します。 this:
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) );
レコードの挿入と取得
テーブルに配列を格納するには、挿入クエリを使用できます:
foreach ($t as $k => $v) { $query = "INSERT INTO test (id," . implode(',', array_keys($v)) . ") VALUES ($k," . implode(',', $v) . ")"; $r = mysql_query($query,$c); }
レコードを取得するには、選択クエリを使用できます:
function getTest() { $ret = array(); $c = connect(); $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; }
これこのアプローチにより、データベース内の配列データのクエリと操作が簡単になります。
以上がMySQL で配列データを効率的に保存およびクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。