首页 > 数据库 >支持 enum 类型的字段允许为空插入数据库

支持 enum 类型的字段允许为空插入数据库

时间:2024-10-03 23:13:21浏览次数:6  
标签:name column 数据库 enum 为空 table array row

支持 enum 类型的字段允许为空插入数据库,我们需要对现有代码进行一些修改。具体来说,我们需要在处理每一行数据时判断每个字段的类型,并在插入时正确处理 NULL 值。

以下是修改后的代码示例:

// 备份数据记录
$result = Db::query("SELECT * FROM `{$table}` LIMIT {$start}, 1000");

foreach ($result as $row) {
    // 使用 addslashes 处理特殊字符
    $row = array_map('addslashes', $row);

    // 获取表结构信息
    $table_structure = Db::query("SHOW COLUMNS FROM `{$table}`");

    // 构造 INSERT 语句
    $values = [];
    foreach ($table_structure as $column_info) {
        $column_name = $column_info['Field'];
        $column_type = $column_info['Type'];

        // 判断是否为 enum 类型
        if (stripos($column_type, 'enum') !== false) {
            // 如果是 enum 类型且值为 null 或空字符串,则插入 NULL
            if ($row[$column_name] === null || $row[$column_name] === '') {
                $values[] = 'NULL';
            } else {
                // 否则正常插入
                $values[] = "'" . str_replace(array("\r", "\n"), array('\r', '\n'), $row[$column_name]) . "'";
            }
        } else {
            // 非 enum 类型直接插入
            $values[] = "'" . str_replace(array("\r", "\n"), array('\r', '\n'), $row[$column_name]) . "'";
        }
    }

    $sql = "INSERT INTO `{$des_table}` VALUES (" . implode(", ", $values) . ");\n";

    if (false === $this->write($sql)) {
        return false;
    }
}

// 还有更多数据
if ($count > $start + 1000) {
    return array($start + 1000, $count);
}

 

标签:name,column,数据库,enum,为空,table,array,row
From: https://www.cnblogs.com/hwrex/p/18446126

相关文章

  • 数据库——DQL单表查询
    DQL单表查询idnamegenderagescore111111刘一女20NULL186222陈二男3090275933张三女2492266055李十四男2092134444王五女1892225573赵十六男2294一、简单查询(SELECT...FROM...)1.查询所有字段(*)--SELECT*FROM表名;SELE......
  • 数据库——DML数据操作
    DML数据操作一、插入数据1.一次单条数据插入向全部字段添加值--INSERT[INTO]数据表名VALUES/VALUE值1,值2,值3...;INSERTINTOclass1VALUES482191,'孙七','女',20,88;INSERTINTOclass1VALUE482191,'孙七','女',20,88;INSERTclass1VALUES482191,'......
  • 数据库——DDL数据库和数据表的基本操作
    DDL一、数据库的基本操作1、创建(CREATE)--CREATEDATABASE/SCHEMA[IFNOTEXISTS]表名[指定数据库的字符集];--创建名为my的数据库CREATEDATABASEmy;CREATESCHEMAmy;--如果名为my的数据库不存在则创建,避免了当数据库存在而发生的错误CREATEDATABASEIFNOTEXIS......
  • 数据库系统------函数依赖与范式
    码属性和非码属性在讲函数依赖和范式前,我们需要了解码属性和非码属性码属性就是构成候选码的属性,非码属性就是不构成候选码的属性,主属性是指构成主码的属性候选码是能够确定关系R的最小属性集合,可以有多个,即多种匹配方法,超码就是一个候选码随便加上另一个属性,主码就是候选码中......
  • SpringBoot项目使用yml文件链接数据库异常
    SpringBoot使用properties连接数据库时没有出现问题SpringBoot使用yml连接数据库时出现:UnabletoconnecttoRedis并在报错信息中出现:发现是用户或者密码出现问题通过查询知道yml是区分数据类型的,所以如果用户名或者密码是数字的话,就要注意将密码用双引号括起来,将其识别为......
  • 【VMware VCF】更新 SDDC Manager 中的 vSAN HCL 数据库。
    VMwareCloudFoundation解决方案中,SDDCManager内的vSANHCL数据库具有有效期,如果vSANHCL数据库在60天内未更新,则会出现警告;如果vSANHCL数据库在90天内未更新,则会出现严重错误。如下图所示,当前SDDCManager中的vSANHCL数据库已超过60天未更新并出现了警告提......
  • 前端轻量级数据库mongodb
     数据库的分布式存储分为前端的分布式和后端服务的分布式数据存储。Javaweb的开发领域中使用后端的数据分布式和集群数据微服务处理模式。数据用户的请求在前端会承接一部分,数据的请求方式分为前端的限流操作。用户在客户端的请求事件就是数据请求流,数据存储在数组中是字节。数......
  • 织梦网站迁移后如何修改数据库配置文件
    当你迁移织梦CMS网站时,需要修改数据库配置文件以确保新的数据库连接能够正常工作。以下是如何修改数据库配置文件的具体步骤:1.修改数据库配置文件定位配置文件:打开织梦CMS安装目录下的 data/common.inc.php 文件。编辑配置文件:使用文本编辑器(如Notepad++或记事本......
  • 解决 PBootCMS 中因数据库名称错误导致的“执行 SQL 发生错误!错误:no such table: ay_c
    当你在使用PBootCMS时遇到“执行SQL发生错误!错误:nosuchtable:ay_config”的提示,这通常意味着程序无法找到指定的数据库表。以下是一些详细的排查和解决步骤:排查与解决步骤确认数据库表是否存在检查数据库配置文件替换数据库名称详细步骤1.确认数据库表是否存在......
  • 网站打开提示: 未检测到您服务器环境的sqlITe3数据库扩展...
    当网站打开时提示“未检测到您服务器环境的SQLite3数据库扩展”,这意味着服务器上缺少SQLite3扩展。SQLite3是一个轻量级的嵌入式数据库引擎,许多Web应用框架和CMS系统会依赖它来实现某些功能。解决方案检查PHP版本安装SQLite3扩展重启Web服务器验证安装详细步骤1.检查PHP......