首页 > 解决方案 > 如何使用 PHP 从 MySQL 列中正确检索 unsigned bigint?

问题描述

我不确定是 PHP 还是 MySQL 搞砸了我。

说,我有一个带有BIGINT UNSIGNED列的表(让我们命名它flgs)。我使用 PHP 从该表中读取数据,如下所示:

$query = "SELECT * FROM `$tbl_nm` ORDER BY `$colID` ASC";

$res = mysqli_query($link, $query);
if($res)
{
    while($aRow = mysqli_fetch_assoc($res))
    {
        echo("flags=0x".dechex($aRow['flgs'])."<br>");
    }
}

如果该flgs列具有重置位 63 的值,那么我会得到正确的结果。但如果设置了 bit-63,则返回值为0x7fffffffffffffff. 嗯?

例如,如果在数据库flgs中设置为0x8000000000000000,我上面的代码会打印:

标志=0x7ffffffffffffffff

为什么,PHP,为什么?

标签: phpmysqlinteger-overflowbigint

解决方案


推荐阅读