首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP检索位掩码值

PHP检索位掩码值
EN

Stack Overflow用户
提问于 2012-08-28 17:23:10
回答 3查看 543关注 0票数 0

我正在尝试从MySql DB表中检索位掩码。我使用meekro db库与数据库进行交互。

以下是用于查询数据库的代码:

代码语言:javascript
复制
$query = DB::queryFirstRow($select, $tid);

$dm = $query['dayMask'];
var_dump($dm);

数据库返回的行包含一个名为dayMask的列,该列被定义为BIT(7),其值为0110001

上面的代码打印string(3) "127",这对我来说没有任何意义。掩码的十进制表示是49127对应于1111111

我做错了什么?如何在PHP中从DB中检索位掩码值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-28 22:00:17

解决了。

该问题与用于插入新值的SQL语句有关。

正如我所发现的,从VolkerK提供的示例开始,为了在MySQL中插入位值,我应该使用以下语法(来自here):

代码语言:javascript
复制
mysql> INSERT INTO t SET b = b'1010';

使用此语法,我的代码可以正常工作。

奇怪的是,将值作为文字插入并不会导致来自MySQL的任何错误或警告。此外,phpmyadmin在使用错误的语法插入时会正确显示字段,而在使用正确的语法插入时会错误地显示值。

票数 1
EN

Stack Overflow用户

发布于 2012-08-28 17:28:41

尝试使用bindec()

代码语言:javascript
复制
$dm = bindec($query['dayMask']);
票数 1
EN

Stack Overflow用户

发布于 2012-08-28 17:38:03

我不能用重现这种行为

代码语言:javascript
复制
<?php
require 'meekrodb.2.0.class.php';
setup();
$select = 'SELECT * FROM tmpSO WHERE id=%s'; $tid = 1;
$query = DB::queryFirstRow($select, $tid);

$dm = $query['dayMask'];
var_dump($dm);



function setup() {
    DB::$user = 'localonly';
    DB::$password = 'localonly';
    DB::$dbName = 'test';
    DB::$host = 'localhost';
    DB::$port = '3306';
    DB::$encoding = 'utf8';
    DB::query('
        CREATE TEMPORARY TABLE tmpSO (
            id int auto_increment,
            dayMask BIT(7),
            primary key(id)
        )
    ');
    DB::query("INSERT INTO tmpSO SET dayMask = b'0110001'");
}

打印string(2) "49"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12156305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档