【问题标题】:Why does int value become string after reading from database?为什么从数据库读取后int值变成字符串?
【发布时间】:2023-03-23 06:15:01
【问题描述】:

在我的 Yii 框架项目中,当我使用 Active Record 从列数据类型均为 numerical 的数据库中读取数据时,我使用 var_dump 获取字符串类型值。我感到很困惑。

【问题讨论】:

  • PHP 是弱类型的,所以字符串也是数字。只是不要对获取字符串感到困惑,它也是一个数字。

标签: php database yii


【解决方案1】:

由于 php 是一种动态类型的语言,接口中的数据类型通常有点令人费解。

通常当从数据库中检索数据时,驱动程序不会费心将每个值转换为 php 中最类似于​​ mysql 中的数据类型的类型(或者您也可以说,php 不够智能如此自动);您必须自己进行转换。幸运的是,这样做真的很容易:

$yourvar = (int)$yourvar;

【讨论】:

  • PHP 不是“无类型”的,这意味着它没有类型。它是动态类型的。
【解决方案2】:

Yii CActiveRecord 在我们执行查询时动态创建模型变量,默认情况下它们是字符串类型的。他们使用 _get & _set 魔术方法动态创建,并且不设置类型,所以是字符串类型。

由于 PHP 不是强类型语言,所以你不必担心这个,你可以改变它们的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多