Heim >Backend-Entwicklung >PHP-Tutorial >请教,SQL语句里如何运行PHP函数对查询的结果进行限制?

请教,SQL语句里如何运行PHP函数对查询的结果进行限制?

WBOY
WBOYOriginal
2016-06-23 14:01:34749Durchsuche

请各位帮帮忙,程序的作用是先执行SQL后,对查询出的结果进行显示,但是如果再查询后在进行判断显示的话分页会出问题,代码如下:

$_BCACHE->cachesql('shopsearch', 'SELECT i.itemid,m.mapapimark,m.itemid FROM '.DB::table('shopitems').'  i LEFT JOIN '.DB::table('shopmessage').' m ON i.itemid=m.itemid WHERE m.mapapimark!="" ', 0, 1, $tpp, 0, 'index', 'shop');$multipage = $_SBLOCK['shopsearch_multipage'];$resultcount = $_SBLOCK['shopsearch_listcount'];foreach($_SBLOCK['shopsearch'] as $value) {	$value = $_BCACHE->getshopinfo($value['itemid']);//商家坐标数据处理$value['X_preg1'] = preg_replace('/\(/', '', $value['mapapimark']);//去除X坐标前面的括号$value['storeX'] = preg_replace('/,(.*)/','',$value['X_preg1']);//去除Y坐标以及前面的逗号,只保留X坐标$value['Y_preg1'] = preg_replace('/\)/', '', $value['mapapimark']);//去除Y坐标后面的括号$value['storeY'] = preg_replace('/(.*),/', '',$value['Y_preg1']);//去除X坐标以及后面的逗号,只保留Y坐标$value['juli'] = GetDistance($ClientY,$ClientX,$value['storeY'],$value['storeX'], 2);$value['juli'] = round($value['juli'],2);if($value['juli'] <= $Distance){	$shoplist[] = $value;	}}	

这个是DZ里面的一段代码,我想在WHERE m.mapapimark!="" 这个语句里,调用计算函数GetDistance对查询出的mapapimark进行计算,如果计算出的结果小于$Distance,才查询出该条数据,该如何写? 先谢谢各位。


回复讨论(解决方案)

如果你使用的是 sqlite 数据库就可以,否则不可以
你可以书写数据库函数,也可以在结果集中过滤

计算建议还是在php代码里面完成,数据库计算复杂的话会影响性能

不解,php 计算复杂就不会影响性能了吗?

计算建议还是在php代码里面完成,数据库计算复杂的话会影响性能

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn