gpt4 book ai didi

php - MySQL/PHP - 过滤非数字字段的数值

转载 作者:行者123 更新时间:2023-11-29 00:21:20 25 4
gpt4 key购买 nike

基本上,这个想法是人们根据长度过滤搜索结果。但是,长度存储在文本字段中,因为这可能因项目而异。一个项目可能是 16,20 米,另一个可能是 8.1m。

如何开始?从数据库中获取所有可能的值,将它们更改为过滤的格式(将所有内容解析为仅数字,逗号分隔?),获取关联的 ID,然后仅显示与这些 ID 相关的所有信息,或者是否存在我还没有找到的方法?

亲切的问候。

编辑:标准化格式是一种解决方案,但我不能在这种情况下应用。我不被允许这样做。情况变得更糟 - 过滤可以同时具有最小值和最大值。最小值:4 和最大值:8 应显示这些长度之间的所有内容。 6.1 米,7,82 米,5.

最佳答案

因为我无法更改数据库的设置方式(标准化是,为长度本身保留单独的字段,一个 float / double ,以及一个用于附录的字段),我决定采用这种方法.

首先得到所有可能的长度,然后:

foreach($lengths as $length) {
$cLengths[$length['item_id']] = preg_replace("/[^0-9,.]/", "", str_replace(',', '.', $length['field_value']));
}

假设随后将在 URL 中使用 &minLength=2&maxLength=10 调用该页面:

$minLength = $_GET['minLength'];
$maxLength = $_GET['maxLength'];
if(!is_null($minLength) && !is_null($maxLength)) {
$filteredItems = '';
foreach($cLengths as $itemId => $cL) {
if($cL >= $minLength && $cL <= $maxLength) {
$filteredItems .= $itemId . ',';
}
}
$filteredItems = substr($filteredItems, 0, -1);
$where .= 'item_id IN(' . $filteredItems . ') AND ';
}

关于php - MySQL/PHP - 过滤非数字字段的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20946437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com