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

标签 php mysql codeigniter bit

我被困在某个地方,需要你的指导,基本上我是使用位运算符 OR(|) 将多个值插入到单个 colomn 中,我的表结构就像 enter image description here我正在插入工作日,例如 1 表示星期日2 从星期一开始4 表示星期二8 表示星期三,依此类推 pipe sign(|) 分隔,例如 sundaymonday 它将像 1|2 一样插入等等,但是当它插入到表中时,它显示为 enter image description here

现在我想知道如何选择和显示我插入的确切值以及如何使用 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/

相关文章:

php - 在 laravel 中将数组数据保存到 mySQL 的好方法是什么

php - 在没有多重继承的情况下如何解决这个问题?

php - json_decode 和内存清除

php - 从 foreach 循环中删除 session 数组变量

mysql - 选择 MySQL 中某一列出现频率最高的行

php - 如何使用 PhpSpreadSheet 折线图在每个标记中设置可见数据标签?

php mysql 全文搜索 : lucene, sphinx,或者?

javascript - 如何在 codeigniter 中为同一个表创建动态/链接下拉列表

php - Cassandra 还是 mysql 5?哪个对 future 有好处?

php - 将 javascript 值传输到 php 变量