Php 如何在MySQL列中使用二进制数据类型

Php 如何在MySQL列中使用二进制数据类型,php,mysql,codeigniter,bit,Php,Mysql,Codeigniter,Bit,我被困在某个地方,需要您的指导,基本上我使用位运算符或(|)将多个值插入到单个列中,我的表结构如下 我将插入周日的1、周一的2、周二的4、周三的8等工作日,以管道符号(|)分隔like forsunday和monday它将插入like1 | 2等等,但当它插入到表中时,它显示为那样 现在我想知道如何选择并显示插入的确切值,以及如何使用php(codeigniter)和mysql更新它 我使用了这个查询从表_name中选择cast(列_nameas varchar),它通过对所有解码值求和得到结果

我被困在某个地方,需要您的指导,基本上我使用
位运算符或(|)
将多个值插入到单个
列中,我的表结构如下
我将插入周日的
1、周一的
2、周二的
4、周三的
8等工作日,以
管道符号(|)分隔
like for
sunday
monday
它将插入like
1 | 2
等等,但当它插入到表中时,它显示为那样

现在我想知道如何选择并显示插入的确切值,以及如何使用
php(codeigniter)
mysql
更新它

我使用了这个查询
从表_name
中选择cast(列_nameas varchar),它通过对所有解码值求和得到结果,比如1 | 4为5,1 | 2为3为3,1 | 4为5,等等,但是现在我如何将其转换为插入类型

$column&(1<<$day)
在php中,要将其转换为所需的格式

echo '(';
$sep=0;
for($a=1;$a<=$column;$a<<=1)
    if($column&$a){
        if($sep) echo '|';
        else $sep=1;
        echo $a;
    }
echo ')';
echo'(';
$sep=0;

对于($a=1;$atry
从表_name
中选择CAST(周_天作为字符),请看一看问题是,为什么要在二进制列类型中存储多个值,以
分隔?通常在存储分隔值时,无论是以逗号(csv)分隔,选项卡,甚至
|
,您应该规范化您的表,并将一行添加到多行中instead@Sean客户机希望像这样存储值this@Vicky你尝试过什么?当我尝试插入类似(1 | 2)的内容时,你能简单描述一下吗在具有tinyint数据类型的数据库中,它正在将0插入column@Vicky
插入a(a)值((1 | 2));
对我来说效果很好。我得到了3分。
echo '(';
$sep=0;
for($a=1;$a<=$column;$a<<=1)
    if($column&$a){
        if($sep) echo '|';
        else $sep=1;
        echo $a;
    }
echo ')';