如何用PHP递归方法在MySQL中实现无限级分类数据的递归写入操作?

更新于
2026-09-23 06:49:46
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计748个文字,预计阅读时间需要3分钟。

如何用PHP递归方法在MySQL中实现无限级分类数据的递归写入操作?

本文实例讲述了如何使用PHP递归写入MySQL实现无限级分类数据操作。以下内容适合广大开发者参考:

PHP递归写入MySQL实现无限级分类数据操作

一、概述

本文将分享如何利用PHP递归函数将无限级分类数据写入MySQL数据库,并实现数据的读取和展示。这种方法适用于需要构建树形结构的数据管理场景。

二、数据库表结构

如何用PHP递归方法在MySQL中实现无限级分类数据的递归写入操作?

首先,我们需要创建一个MySQL表来存储分类数据。以下是一个简单的表结构示例:

sqlCREATE TABLE `kepler_goods_category` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `parent_id` int unsigned NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

其中,`id`字段为自增主键,`parent_id`字段用于存储父分类ID,`name`字段存储分类名称。

三、PHP递归函数

接下来,我们编写一个PHP递归函数来实现无限级分类的写入操作。以下是一个示例:

phpfunction insertCategory($parentId, $name) { $db=new mysqli('localhost', 'username', 'password', 'database'); $stmt=$db->prepare(INSERT INTO kepler_goods_category (parent_id, name) VALUES (?, ?)); $stmt->bind_param(is, $parentId, $name); $stmt->execute(); $stmt->close(); $newId=$db->insert_id; $stmt=$db->prepare(SELECT * FROM kepler_goods_category WHERE parent_id=?); $stmt->bind_param(i, $newId); $stmt->execute(); $result=$stmt->get_result(); while ($row=$result->fetch_assoc()) { insertCategory($newId, $row['name']); } $stmt->close(); $db->close();}

// 调用函数,传入父分类ID和名称insertCategory(0, '根分类');

四、读取和展示分类数据

为了展示分类数据,我们可以编写一个递归函数来遍历分类树:

phpfunction displayCategories($parentId, $level=0) { $db=new mysqli('localhost', 'username', 'password', 'database'); $stmt=$db->prepare(SELECT * FROM kepler_goods_category WHERE parent_id=?); $stmt->bind_param(i, $parentId); $stmt->execute(); $result=$stmt->get_result(); while ($row=$result->fetch_assoc()) { echo str_repeat('——', $level) . $row['name'] . \n; displayCategories($row['id'], $level + 1); } $stmt->close(); $db->close();}

// 调用函数,传入根分类IDdisplayCategories(0);

这样,我们就完成了使用PHP递归写入MySQL实现无限级分类数据操作的过程。希望本文能对您有所帮助!

本文实例讲述了PHP递归写入MySQL实现无限级分类数据操作。分享给大家供大家参考,具体如下:

PHP递归写入MySQL无限级分类数据,表结构:

CREATE TABLE `kepler_goods_category` ( `id` int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `parentid` int unsigned NOT NULL default 0 comment '父级分类ID', `name` varchar(255) NOT NULL default '' comment '分类名称', `kepler_fid` int unsigned NOT NULL default 0 comment '对应开普勒分类ID', `create_time` timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

递归方法写入代码:

static public function addCategoryFromKepler($fid, $parentid = 0){ $category_list = Kepler::queryGoodsCategoryList($fid); // 获取数据 $category_list = $category_list['jd_kepler_item_querycategoriesbyfid_response']; if($category_list['total'] > 0){ foreach ($category_list['categories'] as $key => $value) { $parentid_sub = KeplerCategory::addCategory($value['name'], $value['id'], $parentid); // 插入数据库,得到父ID self::addCategoryFromKepler($value['id'], $parentid_sub); // 递归 } } return true; }

调用代码:

KeplerCategory::addCategoryFromKepler(0);

递归方法读取代码:

static public function getCategoryFormatToKepler($parentid, $format_data = array(), $parent_prefix = '', $current_prefix = ''){ $category_list = self::getCategoryByParentid($parentid); // 根据父ID获取 if(!empty($category_list)){ foreach ($category_list as $key => $value) { $format_data = self::getCategoryFormatToKepler($value['id'], $format_data, $parent_prefix . ',' . $current_prefix, $value['kepler_fid']); } }else{ $format_data[] = trim($parent_prefix . ',' . $current_prefix, ','); } return $format_data; }

调用代码:

$category_list = KeplerCategory::getCategoryFormatToKepler(0);

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

本文共计748个文字,预计阅读时间需要3分钟。

如何用PHP递归方法在MySQL中实现无限级分类数据的递归写入操作?

本文实例讲述了如何使用PHP递归写入MySQL实现无限级分类数据操作。以下内容适合广大开发者参考:

PHP递归写入MySQL实现无限级分类数据操作

一、概述

本文将分享如何利用PHP递归函数将无限级分类数据写入MySQL数据库,并实现数据的读取和展示。这种方法适用于需要构建树形结构的数据管理场景。

二、数据库表结构

如何用PHP递归方法在MySQL中实现无限级分类数据的递归写入操作?

首先,我们需要创建一个MySQL表来存储分类数据。以下是一个简单的表结构示例:

sqlCREATE TABLE `kepler_goods_category` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `parent_id` int unsigned NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

其中,`id`字段为自增主键,`parent_id`字段用于存储父分类ID,`name`字段存储分类名称。

三、PHP递归函数

接下来,我们编写一个PHP递归函数来实现无限级分类的写入操作。以下是一个示例:

phpfunction insertCategory($parentId, $name) { $db=new mysqli('localhost', 'username', 'password', 'database'); $stmt=$db->prepare(INSERT INTO kepler_goods_category (parent_id, name) VALUES (?, ?)); $stmt->bind_param(is, $parentId, $name); $stmt->execute(); $stmt->close(); $newId=$db->insert_id; $stmt=$db->prepare(SELECT * FROM kepler_goods_category WHERE parent_id=?); $stmt->bind_param(i, $newId); $stmt->execute(); $result=$stmt->get_result(); while ($row=$result->fetch_assoc()) { insertCategory($newId, $row['name']); } $stmt->close(); $db->close();}

// 调用函数,传入父分类ID和名称insertCategory(0, '根分类');

四、读取和展示分类数据

为了展示分类数据,我们可以编写一个递归函数来遍历分类树:

phpfunction displayCategories($parentId, $level=0) { $db=new mysqli('localhost', 'username', 'password', 'database'); $stmt=$db->prepare(SELECT * FROM kepler_goods_category WHERE parent_id=?); $stmt->bind_param(i, $parentId); $stmt->execute(); $result=$stmt->get_result(); while ($row=$result->fetch_assoc()) { echo str_repeat('——', $level) . $row['name'] . \n; displayCategories($row['id'], $level + 1); } $stmt->close(); $db->close();}

// 调用函数,传入根分类IDdisplayCategories(0);

这样,我们就完成了使用PHP递归写入MySQL实现无限级分类数据操作的过程。希望本文能对您有所帮助!

本文实例讲述了PHP递归写入MySQL实现无限级分类数据操作。分享给大家供大家参考,具体如下:

PHP递归写入MySQL无限级分类数据,表结构:

CREATE TABLE `kepler_goods_category` ( `id` int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `parentid` int unsigned NOT NULL default 0 comment '父级分类ID', `name` varchar(255) NOT NULL default '' comment '分类名称', `kepler_fid` int unsigned NOT NULL default 0 comment '对应开普勒分类ID', `create_time` timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

递归方法写入代码:

static public function addCategoryFromKepler($fid, $parentid = 0){ $category_list = Kepler::queryGoodsCategoryList($fid); // 获取数据 $category_list = $category_list['jd_kepler_item_querycategoriesbyfid_response']; if($category_list['total'] > 0){ foreach ($category_list['categories'] as $key => $value) { $parentid_sub = KeplerCategory::addCategory($value['name'], $value['id'], $parentid); // 插入数据库,得到父ID self::addCategoryFromKepler($value['id'], $parentid_sub); // 递归 } } return true; }

调用代码:

KeplerCategory::addCategoryFromKepler(0);

递归方法读取代码:

static public function getCategoryFormatToKepler($parentid, $format_data = array(), $parent_prefix = '', $current_prefix = ''){ $category_list = self::getCategoryByParentid($parentid); // 根据父ID获取 if(!empty($category_list)){ foreach ($category_list as $key => $value) { $format_data = self::getCategoryFormatToKepler($value['id'], $format_data, $parent_prefix . ',' . $current_prefix, $value['kepler_fid']); } }else{ $format_data[] = trim($parent_prefix . ',' . $current_prefix, ','); } return $format_data; }

调用代码:

$category_list = KeplerCategory::getCategoryFormatToKepler(0);

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。