Php 以字节为单位搜索千字节

Php 以字节为单位搜索千字节,php,Php,我有一个列名为记录大小的表。 在本专栏中,我以字节为单位存储大小, 但在网络上,我显示的是KB大小 public static function getKbFromBytes($string){ if($string){ return ($string/1024); } } 现在我有了一个过滤功能。所以,当我以KB显示大小时,我肯定会以KB为单位从用户处获取搜索输入&而不是以字节为单位,尽管在DB中,我有

我有一个列名为记录大小的表。 在本专栏中,我以字节为单位存储大小, 但在网络上,我显示的是KB大小

       public static function getKbFromBytes($string){
         if($string){
            return ($string/1024);
          }
       }
现在我有了一个过滤功能。所以,当我以KB显示大小时,我肯定会以KB为单位从用户处获取搜索输入&而不是以字节为单位,尽管在DB中,我有以字节为单位的输入。为此,我以KB为单位获取输入,然后再次将其转换为字节,如:

    public static function getBytesFromKb($string){
        if($string){
         return ($string * 1024);
       }
    }
例如:

size in Bytes = 127232
当我应用我的函数时,它=124.25 KB 现在,当用户完全按照124.25编写时,搜索就开始了, 但我希望那个用户写的不是完全一样的。 用户也可以写124而不是124.54,当用户写124时,我的搜索不起作用——这意味着它不显示任何记录。 我还从转换的字节中加减法50,但它不起作用

   $sql = $sql->where('r.recording_size BETWEEN "'.(Engine::getBytesFromKb($opt['sn']) - 50) .'" AND "'.(Engine::getBytesFromKb($opt['sn']) + 50) .'"');

我怎样才能做到这一点呢?

搜索大小应该是一个范围,而不是一个等式。至少,默认值应该是范围,除非你的应用程序的主要焦点是确切的大小。对于SQL:

$kb = round($opt['sn']);
$sql = $sql->where('r.recording_size BETWEEN '.($kb * 1024).' AND '.(($kb + 1) * 1024));
顺便说一句,您应该省略引号(
)。即使对于字符串,它们也是无效的/非标准的。您正在比较
int

另一个需要注意的是KiB对KB