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)
?