让我们有一个PHP方法,每次调用时都应该在MySQL数据库中插入几行。不幸的是,这些记录代表了一个层次结构,我想通过为每个级别添加一个密钥来保持这个层次结构。一个例子可能是这样的:
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
我目前的解决方案是这样的:
有没有办法简化这一点,即insert方法是否提供任何类型的返回值,包括插入数据的键?或者我应该尝试在PHP方法中生成唯一键并在之后检查重复项吗?
答案 0 :(得分: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);
依旧......
问候
答案 1 :(得分:0)
我只需在表格中添加一个额外的字段来定义层次结构:
id | parent_id | value
0 | NULL | val1
1 | NULL | val2
2 | 1 | val2-1
3 | 1 | val2-2
任何行的parent_id
都指向其父级的id
;最高级别项的parent_id
的值为NULL
。