我有一个PHP查询:
$querystrShop = $wpdb->get_results("
                        SELECT productid 
                        AS post_id,( 3959 * acos(cos(radians($latitude)) * cos( radians(latitude))* cos( radians( longitude )- radians($longitude))+ sin(radians($latitude))* sin( radians(latitude)))) 
                        AS distance, phiz_postmeta.meta_value
                        FROM phiz_geo_location
                        JOIN phiz_term_relationships ON phiz_geo_location.productid = phiz_term_relationships.object_id
                        LEFT JOIN phiz_postmeta ON phiz_geo_location.productid = phiz_postmeta.post_id
                        LEFT JOIN phiz_posts AS p ON phiz_postmeta.post_id = p.id
                        WHERE phiz_term_relationships.term_taxonomy_id IN ($catsearched)
                        AND p.post_title =\'".$html."\'
                        AND p.post_status = \'publish\'
                        HAVING distance < \'100\'
                        ");
 这个Mysql查询:
SELECT productid AS post_id,( 3959 * acos(cos(radians(43.5586)) * cos( radians(latitude))* cos( radians( longitude )- radians(5.25182))+ sin(radians(43.5586))* sin( radians(latitude)))) AS distance, phiz_postmeta.meta_value FROM phiz_geo_location JOIN phiz_term_relationships ON phiz_geo_location.productid = phiz_term_relationships.object_id LEFT JOIN phiz_postmeta ON phiz_geo_location.productid = phiz_postmeta.post_id LEFT JOIN phiz_posts AS p ON phiz_postmeta.post_id = p.id WHERE phiz_term_relationships.term_taxonomy_id IN (207) AND p.post_title = \'ACTION PARIS MASQ NOIR PEEL OFF X3\' AND p.post_status = \'publish\'HAVING distance < \'100\'
 第一个要求有3个产品,第二个只有2个,为什么会有这种差异?
我尝试获取范围距离(100)内的所有产品,实际上PHP查询返回
距离:191公里
距离:18.3公里
距离:11.3公里
和Mysql返回
距离:18.3公里
距离:11.3公里
谢谢
编辑:
添加了一些更正,但存在相同的问题:
$querystrShop = $wpdb->prepare("
                        SELECT productid 
                        AS post_id,( 3959 * ACOS(COS(RADIANS( $latitude )) * COS(RADIANS(phiz_geo_location.latitude)) * COS(RADIANS(phiz_geo_location.longitude) - RADIANS( $longitude )) + SIN(RADIANS( $latitude )) * SIN(RADIANS(phiz_geo_location.latitude))))
                        AS distance, phiz_postmeta.meta_value
                        FROM phiz_geo_location
                        JOIN phiz_term_relationships ON phiz_geo_location.productid = phiz_term_relationships.object_id
                        LEFT JOIN phiz_postmeta ON phiz_geo_location.productid = phiz_postmeta.post_id
                        LEFT JOIN phiz_posts AS p ON phiz_postmeta.post_id = p.id
                        WHERE phiz_term_relationships.term_taxonomy_id IN ($catsearched)
                        AND p.post_title =\'".$html."\'
                        AND p.post_status = \'publish\'
                        HAVING distance < \'100\'
                        ");
                        $querystrShop = $wpdb->get_results( $querystrShop );
 编辑2:也已尝试
$querystrShop = $wpdb->prepare("
                        SELECT productid 
                        AS post_id,( %d * ACOS(COS(RADIANS( %s )) * COS(RADIANS(phiz_geo_location.latitude)) * COS(RADIANS(phiz_geo_location.longitude) - RADIANS( %s )) + SIN(RADIANS( %s )) * SIN(RADIANS(phiz_geo_location.latitude))))
                        AS distance, phiz_postmeta.meta_value
                        FROM phiz_geo_location
                        JOIN phiz_term_relationships ON phiz_geo_location.productid = phiz_term_relationships.object_id
                        LEFT JOIN phiz_postmeta ON phiz_geo_location.productid = phiz_postmeta.post_id
                        LEFT JOIN phiz_posts AS p ON phiz_postmeta.post_id = p.id
                        WHERE phiz_term_relationships.term_taxonomy_id IN ($catsearched)
                        AND p.post_title =\'".$html."\'
                        AND p.post_status = \'publish\'
                        HAVING distance < %f",
                        $earth_radius,
                        $latitude,
                        $longitude,
                        $latitude,
                        $radious
                        );
                        $sql = $wpdb->get_results( $querystrShop );
 编辑3准备的结果:
SELECT productid AS post_id,( 3959 * ACOS(COS(RADIANS(\'43.2832512\')) * COS(RADIANS(phiz_geo_location.latitude)) * COS(RADIANS(phiz_geo_location.longitude) - RADIANS(\'5.5115776\')) + SIN(RADIANS(\'43.2832512\')) * SIN(RADIANS(phiz_geo_location.latitude)))) AS distance, phiz_postmeta.meta_value 
FROM phiz_geo_location 
JOIN phiz_term_relationships ON phiz_geo_location.productid = phiz_term_relationships.object_id 
LEFT JOIN phiz_postmeta ON phiz_geo_location.productid = phiz_postmeta.post_id 
LEFT JOIN phiz_posts AS p ON phiz_postmeta.post_id = p.id 
WHERE phiz_term_relationships.term_taxonomy_id IN (207) 
AND p.post_title =\'ACTION PARIS MASQ NOIR PEEL OFF X3\' 
AND p.post_status = \'publish\' 
HAVING distance < 100