发新帖

[PHP] [ThinkPHP] 使用Db::query 查询出来的结果集null 变成了空字符串

零下一度 2023-5-11 567

如果在 config/database.php 文件中修改了 params 配置项,但是查询结果中的 null 值仍然被自动转换为空字符串,可能是因为其他地方也修改了该配置项。

可以通过以下方法来确认该问题:

  1. 在代码中使用 Db::getConfig() 方法获取当前数据库连接的配置信息,例如:
$config = Db::getConfig();
var_dump($config);
  1. 查看输出信息中 params 部分是否已经修改为所需的配置。

如果输出信息中的 params 部分与预期不符,说明该配置项可能被其他地方覆盖了。可以尝试在程序中搜索该配置项,并确认它在其他文件中是否被重新定义或覆盖。

如果无法找到覆盖该配置项的原因,可以尝试在所有的数据库配置文件中都将 null_as_string 设置为 false,例如:

// config/database.php
return [
    // 数据库连接配置
    'connections' => [
        // 默认数据库连接配置
        'mysql' => [
            // 数据库类型
            'type'     => 'mysql',
            // 服务器地址
            'hostname' => 'localhost',
            // 数据库名
            'database' => 'test',
            // 用户名
            'username' => 'root',
            // 密码
            'password' => '',
            // 端口
            'hostport' => '3306',
            // 数据库连接参数
            'params'   => [
                // 将 NULL 转换成实际的 null 值
                'null_as_string' => false,
            ],
        ],
    ],
];

在以上示例中,将 null_as_string 设置为 false 将确保查询结果中的 null 值被输出为实际的 null 值。




最新回复 (0)
返回
零下一度
主题数
928
帖子数
0
注册排名
1