假设有一个 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
我当前的解决方案是这样的:
- 在 hier_key_1 表中插入新记录
- 选择该记录的自增id
- 在 hier_key_2 表中插入新记录
- 选择该记录的自增id
- 在表中插入记录,其中所有值以及 hier_key_1 和 hier_key_2 作为指向其表的外键
有没有办法简化这一点,即插入方法是否提供任何类型的返回值,包括插入数据的键?或者我应该尝试在 PHP 方法中生成唯一键并随后检查重复项?
最佳答案
是的,有:
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);
等等..
问候
关于php - sql插入具有层次结构的一堆记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10868979/