天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php 數據庫字段復用的基本原理與示例

一、邏輯代數基礎:
  1,數字用二進制表示,所有可能出現的數只有0和1兩個。
  2,基本運算只有“與”、“或”、“非”三種。
  與運算定義為:(用 & 表示與運算)
  0 & 0 = 0
  0 & 1 = 0
  1 & 0 = 0
  1 & 1 = 1
  可以簡單理解為:只要有一個0,結果就是0,和乘法類似。
  或運算定義為:(用 表示與運算)
  0 0 = 0
  0 1 = 1
  1 0 = 1
  1 1 = 1
  可以簡單理解為:只要有一個1,結果就是1,和加法類似。
  二、邏輯運算示例:
  01111010101010101111111111111111 & 1100000 = 1100000
  一般可以理解為:
  如果要獲取一個數字某N位的數值,只需要將這個數字與2的N-1次方(掩碼)進行與運算即可。
  三、數據庫字段定義:
  以數據表 binary_sample為例:
  create table binary_sample(
  uid int unsigned not null,
  status int unsigned not null default 0,
  primary key(uid),
  key i_s(status)
  )engine=innodb;
  status字段定義:
  status字段數據類型為32bit的整數,為了盡可能的存儲多個屬性,我們將其進行如下定義:
  以下所有“位”的描述順序按照從低到高(從右到左)順序表示。
  0-2位表示用戶注冊狀態:
  000 表示新注冊未被批準
  001 表示注冊被批準
  010 表示位高級用戶
  011 表示管理員
  100 表示超級管理員
  101 保留
  110 保留
  111 掩碼
  3-5位用戶性別:
  000 表示性別不確定
  001 表示性別為男
  010 表示性別為女
  011 保留
  100 保留
  101 保留
  110 保留
  111 掩碼
  如果我們要查詢所有 男用戶 則:
  select * from binary_sample where status & b'111000' = b'001000';
  如果我們要查詢所有 管理員用戶 則:
  select * from binary_sample where status & b'111' = b'011';
  如果我們要查詢所有 男管理員用戶 則:
  select * from binary_sample where status & b'111111' = b'001011';
  如果我們要查詢所有 非 新注冊未被批準用戶 則:
  select * from binary_sample where status & b'111' != b'000';
  四,使用php程序進行此類計算:
  define("USER_NEW",0);//000
  define("USER_NORMAL",1);//001
  define("USER_ADVANCE",2);//010
  define("USER_MANAGE",3);//011
  define("USER_SUPER",4);//100
  define("USER_MASK",7);//111
  define("GENDER_UNKNOWN",0);// 000000
  define("GENDER_MALE",8);// 001000
  define("GENDER_FEMALE",9);// 010000
  define("GENDER_MASK",56);// 111000
  如果我們要查詢所有 男用戶 則:
  $status=GENDER_MALE;
  $mask=GENDER_MASK;
  $sql="select * from binary_sample where status & ${mask}' = ${status}";
  如果我們要查詢所有 管理員用戶 則:
  $status=USER_MANAGE;
  $mask=USER_MASK;
  $sql="select * from binary_sample where status & ${mask}' = ${status}";
  如果我們要查詢所有 男管理員用戶 則:
  $status=GENDER_MALE & USER_MANAGE;
  $mask = GENDER_MASK & GENDER_MASK;
  $sql="select * from binary_sample where status & ${mask}' = ${status}";
  如果我們要查詢所有 非 新注冊未被批準用戶 則:
  $status = USER_NEW;
  $mask = USER_MASK;
  $sql="select * from binary_sample where status & ${mask} != ${status}";
  依此類推,只要定義好每個值的含義,查詢基本上就定了。

php技術php 數據庫字段復用的基本原理與示例,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 睡觉被偷偷进入magnet | 伊人不卡久久大香线蕉综合影院 | 免费精品国产日韩热久久 | 一本道无码字幕在线看 | GOGOGO高清免费播放 | 边摸边吃奶边做带声音 | 99精品视频在线观看免费播放 | 久久国产高清视频 | 怡春院国产精品视频 | 国模啪啪久久久久久久 | 国产美女视频一区二区二三区 | 性色AV乱码一区二区三区视频 | 恋夜直播午夜秀场最新 | 午夜欧洲亚洲AV永久无码精品 | 国产成人在线免费 | 小s现场抛胸挤奶 | 丰满少妇69激情啪啪无码 | 久久久久伊人 | 息与子在线交尾中文字幕 | 日本大尺码喷液过程视频 | 免费一区二区三区久久 | xiao77唯美清纯 | 99视频免视看 | 国产国拍亚洲精品永久软件 | 亚洲成人精品 | 特黄特色大片免费播放器9 特黄特黄aaaa级毛片免费看 | 国产精品久久久久久日本 | 婷婷精品国产亚洲AV在线观看 | 高清不卡伦理电影在线观看 | 最近的2019中文字幕国语 | 国产三级级在线电影 | 息与子在线交尾中文字幕 | 啊叫大点声欠CAO的SAO贷 | ass亚洲熟妇毛耸耸pics | 亚州三级视频 | 日韩精品一卡二卡三卡四卡2021 | 色就色 综合偷拍区欧美 | 中文乱码35页在线观看 | 久久精品AV一区二区无码 | 忘忧草在线影院www日本 | 先锋资源久久 |