php - 如何以二进制形式获取 BIT(...) 数据类型列的值?

标签 php mysql sql pdo

我有一个这样的表:

// numbers
+---------+------------+
|    id   |    numb    |
+---------+------------+
| int(11) |   bit(10)  |
+---------+------------+
| 1       | 0000000001 |
| 2       | 0000000101 |
| 3       | 0000000000 |
| 4       | 0000001011 |
+---------+------------+

当我获取 numb 列时,结果将是这样的:

// Query
mysql> SELECT numb FROM numbers WHERE id = 2

// Fetching by PHP (pdo)
$result = $stm->fetch();
$numb   = $result['numb'];
echo $numb;
//=> 5

如您所见,最终结果是5。虽然我想获取字符串形式的确切值,例如 0000000101。我该怎么做?

最佳答案

您可以使用 decbin()功能和sprintf对于前置零

<?php

$numb = 5;
echo sprintf("%010d",decbin($numb));

输出:

0000000101

来自您的评论:

12 - 0000001100
26 - 0000011010

更新1:

您可以像这样分配给 $numb 变量:

$numb = sprintf("%010d",decbin($result['numb']));

关于php - 如何以二进制形式获取 BIT(...) 数据类型列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37107776/

相关文章:

php - 使用 PHP 处理 SQL JOIN 结果

sql - 如何获取具有相同 ID 的最新记录?

php - while ($row = $result->fetch_object()) 是如何工作的?

php - 多条件搜索

php - 使用 PHP 从 SQL 数据库中获取信息

MySql 表自动增量卡在 0

php - 使用 Javascript 确认对话框破坏 PHP 代码?

php - Mysql查询的问题

sql - 选择除与另一个表匹配的那些之外的所有内容

c# - 如何从 LINQ 实现 SQL CASE 语句