PHP从8.0升级到8.2改变了查询结果的数据类型

问题描述 投票:0回答:1

我最近将我的 Laminas 项目从 PHP 8.0 更新到 PHP 8.2。 PHP升级后,

integer
字段的select查询结果由
string
变为
integer

我搜索并看到一些建议将

PDO::ATTR_STRINGIFY_FETCHES
添加为
true
,所以我将其添加到我的
global.php
中,如下,

return [
    'api-tools-content-negotiation' => [
        'selectors' => [],
    ],
    'db' => [
        'adapters' => [
            'dummy' => [],
        ],
        'driver' => 'Pdo',
        'dsn' => 'mysql:dbname=' . DB['DATABASE'] . ';host=' . DB['HOST'] . ';charset=utf8',
        'driver-options' => [
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET \'UTF8\' ',
            PDO::ATTR_STRINGIFY_FETCHES => true,
        ],
        'username' => DB['USER'],
        'password' => DB['PASSWORD']
    ],
];

但它仍然给出整数值。如何让它返回升级 PHP 之前的值?

php mysql pdo
1个回答
0
投票

确保正确应用您的

PDO::ATTR_STRINGIFY_FETCHES
设置。 如果此解决方案不起作用,则在 PHP 代码中转换数据类型,如下所示:

(string) $value
© www.soinside.com 2019 - 2024. All rights reserved.