0

呼び出されるたびに、MySQL データベースに数行を挿入する PHP メソッドがあるとします。残念ながら、これらのレコードは階層を表しているため、各レベルにキーを追加してこの階層を維持したいと考えています。例は次のようになります。

id    hier_key_1    hier_key_2    value
0     0             0             val1
1     0             0             val2
2     1             0             val3
3     1             0             val4
4     2             1             val5
5     2             1             val6

私の現在のソリューションは次のように機能します。

  1. hier_key_1 テーブルに新しいレコードを挿入する
  2. このレコードの自動インクリメント ID を選択
  3. hier_key_2 テーブルに新しいレコードを挿入する
  4. このレコードの自動インクリメント ID を選択
  5. すべての値とhier_key_1およびhier_key_2をテーブルを指す外部キーとしてテーブルにレコードを挿入します

これを単純化する方法はありますか?つまり、insert メソッドは、挿入されたデータのキーを含む何らかの種類の戻り値を提供しますか? または、PHP メソッドで一意のキーを生成し、後で重複をチェックする必要がありますか?

4

2 に答える 2

2

はい、あります:

PHP:

$query = "INSERT INTO hier_key_1(hier_key_1) VALUES (0)"); 
if( !mysql_query($query) ) 
{/*insert failed*/} 

$id_key_1 = mysql_insert_id();

//... and so on... 

MYSQL-SQL

INSERT INTO hier_key_1(hier_key_1) VALUES (0); SET @id_key_1 =
LAST_INSERT_ID();

INSERT INTO hier_key_2(hier_key_2) VALUES (0); SET @id_key_2 =
LAST_INSERT_ID();

INSERT INTO table_name(id, hier_key_1, hier_key_1,value) VALUES (0,
@id_key_1,@id_key_2,value1);

等々..

挨拶

于 2012-06-03T08:58:18.737 に答える
0

テーブルにフィールドを 1 つ追加するだけで、階層を定義できます。

id |   parent_id | value
 0 |        NULL | val1
 1 |        NULL | val2
 2 |           1 | val2-1
 3 |           1 | val2-2

行のは、その親の をparent_id指します。idparent_id上位アイテムの にはNULL値があります。

于 2012-06-03T08:57:49.797 に答える