如何使用PHP从MySQL列中正确检索未签名的bigint?

如何使用PHP从MySQL列中正确检索未签名的bigint?,php,mysql,integer-overflow,bigint,Php,Mysql,Integer Overflow,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)) { ec

我不确定是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>");
    }
}
$query=“按`$colID`ASC`从`$tbl\u nm`订单中选择*”;
$res=mysqli\u查询($link,$query);
如果($res)
{
而($aRow=mysqli\u fetch\u assoc($res))
{
echo(“flags=0x.dechex($aRow['flgs'])。”
”; } }
如果
flgs
列具有位为63的重置值,则得到正确的结果。但如果设置了位63,则返回值为
0x7fffffffffffff
。嗯

例如,如果数据库中将
flgs
设置为
0x80000000000000
,则上面的“我的代码”将打印:

标志=0x7fffffffffffffff


为什么,PHP,为什么?

@Shadow:它怎么会是重复的?这与将列显示为十六进制无关。你们有并没有试着去理解它?很抱歉要指出,但你们的问题,正如上面写的,是关于用十六进制显示一列。如果这不是你想要的,那么你应该说清楚。但在php中处理未签名的bigint时添加了另一个副本。@Shadow:它是如何重复的?这与将列显示为十六进制无关。你们有并没有试着去理解它?很抱歉要指出,但你们的问题,正如上面写的,是关于用十六进制显示一列。如果这不是你想要的,那么你应该说清楚。但是在处理php中未签名的bigint时添加了另一个副本。