列名 = recording_size のテーブルがあります。この列ではサイズをバイト単位で保存していますが、Web ではサイズを KB 単位で表示しています。
public static function getKbFromBytes($string){
if($string){
return ($string/1024);
}
}
これで、Web にフィルター機能が追加されました。したがって、サイズをKBで表示しているので、ユーザーからの検索の入力をバイト単位ではなくKB単位で取得しますが、DBではバイト単位で取得します。そのために、入力を KB で取得し、次のように再度バイトに変換します。
public static function getBytesFromKb($string){
if($string){
return ($string * 1024);
}
}
例:
size in Bytes = 127232
関数を適用すると、ユーザーが 124.25 とまったく同じように書き込むと = 124.25 KB になり、検索は機能しますが、ユーザーがまったく同じように書きたくないのです。ユーザーは 124.54 の代わりに 124 を書き込むこともできます。ユーザーが 124 を書き込むと、検索が機能しなくなります。つまり、レコードが表示されません。また、変換されたバイトから 50 を加算および減算しましたが、機能していません。
$sql = $sql->where('r.recording_size BETWEEN "'.(Engine::getBytesFromKb($opt['sn']) - 50) .'" AND "'.(Engine::getBytesFromKb($opt['sn']) + 50) .'"');
どうすればこれを達成できますか?