我被困在某个地方,需要你的指导,基本上我是使用位运算符 OR(|)
将多个值插入到单个 colomn
中,我的表结构就像
我正在插入工作日,例如 1 表示星期日
、2 从星期一开始
、4 表示星期二
、8 表示星期三
,依此类推 pipe sign(|)
分隔,例如 sunday
和 monday
它将像 1|2
一样插入等等,但是当它插入到表中时,它显示为
现在我想知道如何选择和显示我插入的确切值以及如何使用 php(codeigniter)
和 mysql
更新它?
我使用了这个查询 select cast(column_name as varchar) from table_name
并通过对所有解码值求和得出结果,例如 5 表示 1|4,3 表示 1|2,但是现在我如何将它转换为插入类型,例如 1|2 用于 3 和 1|4 用于 5 等等...
最佳答案
$column&(1<<$day)
将是 0
如果那一天不在列中并且 1<<$day
如果那一天在 php 的列中。
您不需要使用二进制类型。 Tinyint unsigned 就足够了。你可以这样插入
(1|2)
在php中,把它转换成你想要的格式,
echo '(';
$sep=0;
for($a=1;$a<=$column;$a<<=1)
if($column&$a){
if($sep) echo '|';
else $sep=1;
echo $a;
}
echo ')';
关于php - 如何在 MySQL 列中使用二进制数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36615514/