Php 如何以二进制形式获取位(…;)数据类型列的值?

Php 如何以二进制形式获取位(…;)数据类型列的值?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我有一张这样的桌子: // numbers +---------+------------+ | id | numb | +---------+------------+ | int(11) | bit(10) | +---------+------------+ | 1 | 0000000001 | | 2 | 0000000101 | | 3 | 0000000000 | | 4 | 0000001011 | +--

我有一张这样的桌子:

// numbers
+---------+------------+
|    id   |    numb    |
+---------+------------+
| int(11) |   bit(10)  |
+---------+------------+
| 1       | 0000000001 |
| 2       | 0000000101 |
| 3       | 0000000000 |
| 4       | 0000001011 |
+---------+------------+
// Query
mysql> SELECT numb FROM numbers WHERE id = 2

// Fetching by PHP (pdo)
$result = $stm->fetch();
$numb   = $result['numb'];
echo $numb;
//=> 5
$numb = sprintf("%010d",decbin($result['numb']));
当我获取
numb
列时,结果如下:

// numbers
+---------+------------+
|    id   |    numb    |
+---------+------------+
| int(11) |   bit(10)  |
+---------+------------+
| 1       | 0000000001 |
| 2       | 0000000101 |
| 3       | 0000000000 |
| 4       | 0000001011 |
+---------+------------+
// Query
mysql> SELECT numb FROM numbers WHERE id = 2

// Fetching by PHP (pdo)
$result = $stm->fetch();
$numb   = $result['numb'];
echo $numb;
//=> 5
$numb = sprintf("%010d",decbin($result['numb']));
如您所见,最终结果是
5
。而我想得到一个字符串形式的精确值,就像这样
0000000101
。我怎样才能做到这一点呢?

您可以将函数和用于预挂起的零

<?php

$numb = 5;
echo sprintf("%010d",decbin($numb));
根据您的评论:

12 - 0000001100
26 - 0000011010
更新1:

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

// numbers
+---------+------------+
|    id   |    numb    |
+---------+------------+
| int(11) |   bit(10)  |
+---------+------------+
| 1       | 0000000001 |
| 2       | 0000000101 |
| 3       | 0000000000 |
| 4       | 0000001011 |
+---------+------------+
// Query
mysql> SELECT numb FROM numbers WHERE id = 2

// Fetching by PHP (pdo)
$result = $stm->fetch();
$numb   = $result['numb'];
echo $numb;
//=> 5
$numb = sprintf("%010d",decbin($result['numb']));

这完全是按照您的要求使用SQL:

使用和:


这里是给你的

Use@Thamizhan通过使用该函数,结果并不总是10位数字。这将取决于人数<代码>12=>
1100
26
=>
11010
。而我想得到一个基于10的二进制数。只需在它上面加上零!请看答案部分。。没错+1.另外,我想知道,我可以在查询中这样做吗?我的意思是使用类似于
concat()
的东西,并将
numb
的值设为字符串。@Shafizadeh,所以只有我添加了。您可以指定类似于echo的值。请参阅更新的答案。请查看,忘记使用
sprintf()
decbin()
函数。我正试图通过纯sql(而不是php端)实现这一点。可能吗?我只想知道的是将数字列的值作为字符串获取。类似这样的东西(不起作用):
。转换(VARCHAR(10),numb)活动等待。。你的小提琴不正确,哪里是
numb
列?您已将其创建为别名。那是我桌子上的一列。换句话说,
numb
列与
id
列根本不相关。然后在这里添加您的模式或示例数据,以便我可以帮助您out@Shafizadeh签出更新的链接:更好。。。但是在你的小提琴中,麻木是整数。请将其更改为
位(10)