Как использовать двоичный тип данных в столбце MySQL

Я застрял где-то и нуждаюсь в вашем руководстве, в основном я вставляю несколько значений в один 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 и так далее? …

2

Решение

$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 ')';
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector