php - sql插入具有层次结构的一堆记录

标签 php mysql insert

假设有一个 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

我当前的解决方案是这样的:

  1. 在 hier_key_1 表中插入新记录
  2. 选择该记录的自增id
  3. 在 hier_key_2 表中插入新记录
  4. 选择该记录的自增id
  5. 在表中插入记录,其中所有值以及 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/

相关文章:

php - 如何在php mysql中查询搜索次数

mysql - PhpMyAdmin:一个表中的 MySql 字段引用另一表中的字段

mysql - 获取查询结果的子集

mysql - 使用Foxpro将数据插入MYSQL

c++ - 使用 tinyxml2 将文本中的子树插入到现有的 XML 文件中

php - 是否可以防止标准 HTML 注释出现在源代码中?

php - 如何验证表单是否为空? PHP 或 JS

php - 我希望我的按钮可以更改状态集,但不是更改它,而是转到 href 页面

php - 查询不给出空记录

php - 刷新后不要重复插入公式数据