以下是我的代码示例以及我正在尝试做的解释。
在代码的开头,我在数据库中选择了三个变量。然后我将它们与确定距离的函数进行比较,如果距离在给定距离内,则我具有该记录的id。这将导致多个id。可能是五或不,取决于给定的变量。
我需要知道的是,一旦我确定了我需要使用的id,我需要将变量或其他可管理的东西放入其中。基本上我需要获取列表并再次查询数据库以从数据库中获取详细信息列表。该列表将返回稍后将转到json_encode
进行处理的对象。
我需要知道的是将每个id放入变量并将其传递给数据库查询并获得我需要的结果的最佳方法是什么。
我尝试过使用$dbStations->where('_id', '34,33,45')
但它只返回第一个值。如果可能,我需要WHERE _id = 34 AND 33 AND 45
之类的东西。
我正在使用Codeigniter作为我的框架,我已经查看了文档,但我找不到解决方案。
编辑:现在我已经从数据库中选择了数据,我需要在检索到的每条记录的末尾显示距离。
Example of json: {"details":[{"country":"United States","_id":"3892","lat":"39.954559","lng":"-82.837608","admin_level_1":"Ohio","locale":"Columbus"}]}
这就是它需要的东西,请记住,距离不在数据库中,而是在运行中计算。
Example of json: {"details":[{"country":"United States","_id":"3892","lat":"39.954559","lng":"-82.837608","admin_level_1":"Ohio","locale":"Columbus", "distance": "1.2 Mi"}]}
有关如何将距离的任何想法附加到每个结果的末尾?
$dbStations->select('lat');
$dbStations->select('lng');
$dbStations->select('_id');
$stations = $dbStations->get('stDetails');
foreach ($stations->result() as $station) {
$lat2 = $station->lat;
$lng2 = $station->lng;
$stId = $station->_id;
$distance = $this->distance->gpsdistance($lat1, $lng1, $lat2, $lng2, "M");
if ($distance <= $rad) {
//at this point the code has determined that this id is within
//the preferred distance.
$stationArr[] = $stId;
}
}
$dbStations->select('country, _id, lat, lng, admin_level_1, locale');
$dbStations->where_in('_id', $stationArr);
$stations = $dbStations->get('stationDetails');
echo json_encode(array('stations' => $stations->result()));
}
答案 0 :(得分:12)
尝试使用where_in()
$ids = array(33, 34, 45);
$dbStations->where_in('id', $ids);
// Produces: WHERE id IN (33, 34, 45)
这将返回ID为33,34,45
的记录