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. MySQL में समान मान प्राप्त करने के लिए एकाधिक तालिकाओं में शामिल होना

  2. MySQL में DATETIME फ़ील्ड से केवल दिनांक का चयन कैसे करें?

  3. MySQL उपयोगकर्ता पहुंच - तालिका विशिष्ट

  4. INSERT क्वेरी का उपयोग करके पंक्तियों को एक तालिका से दूसरी तालिका में कॉपी करें

  5. डेटाबेस () - MySQL में वर्तमान डेटाबेस का नाम प्राप्त करें