MySQL 整数字段在 PHP 中以字符串形式返回

2022-08-30 06:47:49

我在MySQL数据库中有一个表字段:

userid INT(11)

因此,我通过此查询将其调用到我的页面:

"SELECT userid FROM DB WHERE name='john'"

然后为了处理结果,我做:

$row=$result->fetch_assoc();

$id=$row['userid'];

现在,如果我这样做:

echo gettype($id);

我得到一根绳子。这不应该是一个整数吗?


答案 1

当您使用PHP从MySQL数据库中选择数据时,数据类型将始终转换为字符串。您可以使用以下代码将其转换回整数:

$id = (int) $row['userid'];

或者通过使用以下函数:intval()

$id = intval($row['userid']);

答案 2

使用 mysqlnd(本机驱动程序)进行 php。

如果你在Ubuntu上:

sudo apt-get install php5-mysqlnd
sudo service apache2 restart

如果你在 Centos 上:

sudo yum install php-mysqlnd
sudo service httpd restart

本机驱动程序相应地返回整数类型。

正如@Jeroen所指出的那样,此方法仅适用于PDO。
正如@LarsMoelleken所指出的,如果您还将MYSQLI_OPT_INT_AND_FLOAT_NATIVE选项设置为true,则此方法将与mysqli一起使用。

例:

$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, TRUE);

推荐