2012-09-13 51 views
0

我有一個列名爲= recording_size的表。 在這一列中,我以字節爲單位存儲大小, 但在Web上,我以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時,我的搜索不起作用 - 這意味着它不顯示任何記錄。 我也有ADD &從轉換的字節中減去50,但它不起作用。

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

我該如何做到這一點?

回答

1

搜索大小也許應該爲一個範圍,而不是一個平等的反正。至少,默認值應該是範圍,除非您的應用的主要焦點是確切的大小。對於SQL:

$kb = round($opt['sn']); 
$sql = $sql->where('r.recording_size BETWEEN '.($kb * 1024).' AND '.(($kb + 1) * 1024)); 

順便說一句,你應該省略引號(")。即使是字符串,它們也是無效/非標準的。而你正在比較int的。

另一件事看的是昆明植物VS KB。