Я застрял где-то и нуждаюсь в вашем руководстве, в основном я вставляю несколько значений в один colomn
с помощью bit-wise operator OR(|)
и моя структура таблицы похожа
и я вставляю будни как 1 for sunday
, 2 from monday
, 4 for tuesday
, 8 for wednesday
и так далее по 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 без знака достаточно. Вы можете вставить как это
(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 ')';
Других решений пока нет …