使用$ wpdb-> get_result

时间:2015-08-21 19:15:57

标签: sql wordpress

我正在尝试为wordpress帖子整理一个谷歌地图,其中有一个lat和long保存为元值。

我需要将lat和long输出作为列表中的两个单独值,以便我可以使用result [1]和result [2]调用它们。现在我可以同时输出lat和long但是它们在列表中是单独的条目(即每个帖子标题将被列出两次,一次用于lat,一次用于long,我需要将它列为lat,long为long两次它的价值观)

以下是代码现在的样子(printf只是为了测试$ result的输出):

  <?php
$lat = 'latitude';
$long = 'longitude';
    $results = $wpdb->get_results( "
        SELECT 
            post_title, 
        meta_value
        FROM {$wpdb->posts} 
            INNER JOIN {$wpdb->postmeta} 
        ON ( $wpdb->posts.ID = {$wpdb->postmeta}.post_id )
        WHERE meta_key = '$lat'
        OR meta_key = '$long'
    " );

    foreach( $results as $result )
    {
        printf( '<pre>%s</pre>', htmlspecialchars( var_export( $result, true ) ) );
    }

?>

<style type="text/css">
      html, body { height: 100%; margin: 0; padding: 0; }
      #map { height: 350px; width:100%; }
    </style>
    
  <script type="text/javascript">



// MAP

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 11,
    center: {lat: 53.343156, lng: -6.258545},
    scrollwheel: false
  });

  setMarkers(map);
}

// LOCATIONS

var locations = [
<?php

    foreach( $results as $result ) {

        echo "\t\t\t['"
             . str_replace("'", "\'", $result[0])
             . "', " . $result[1]
             . ", '" . $result[3] . "'"
             . "],\n";
    } ?>            ];


function setMarkers(map) {
  // Adds markers to the map.
  
  for (var i = 0; i < results.length; i++) {
    var result = results[i];
    var marker = new google.maps.Marker({
      position: {lat: result[1], lng: result[2]},
      map: map,
      title: result[0]
    });
  }
}
    </script>
    <script async defer src="https://maps.googleapis.com/maps/api/js?key=MyMapKey&callback=initMap">
    </script>

建议非常感谢。

0 个答案:

没有答案