Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да прилагам привилегии във форума

Битовата маска за разрешения се разбира най-добре, когато е представена като двоична, като всяка цифра, представляваща разрешение, е включена или изключена. Така че, ако разрешенията X, Y и Z съществуват и аз имам достъп само до X и Z, 101 би означавал, че имам първото и третото разрешение, предоставени ми, но не и второто. Двоично число 101 е еквивалентно на десетичното число 5 , така че това ще бъде съхранено в базата данни. Едно малко цяло число е много по-ефективен обект за съхранение от низ или няколко малки цели числа.

РЕДАКТИРАНЕ: Разбрах колко лесно е да се използват съществуващите функции за преобразуване, за да започне доста бързо изпълнение. Ето една извадка.

<?php
function bitmask_expand($n) {
  // 9 returns array(1, 0, 0, 1)
  return str_split(base_convert($n, 10, 2));
}

function bitmask_compact($a) {
  // array(1, 0, 0, 1) returns 9
  return (int) base_convert(implode($a), 2, 10);
}

$ns = range(0, 7);
foreach($ns as $n) {
  print_r($b = bitmask_expand($n));
  echo bitmask_compact($b), "\n\n";
}

Може да получите по-добра производителност, ако използвате цикли, вместо да дърпате обратно към и от низове, но това илюстрира принципа доста ясно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. org.hibernate.InstantiationException:Няма конструктор по подразбиране за обект::principal.Cliente

  2. Escape цитат в HQL заявка

  3. Как да ускоря създаването на MySQL таблица от голям CSV файл?

  4. MySql SELECT съюз за различни колони?

  5. Вмъкване на избраните данни в базата данни