MySQL to$WPDB查询的帮助

时间:2012-03-30 作者:Jared

这是我的问题。我想查询三个表——状态、点和状态点。

状态包含stateid和名称。点:点ID、点LAT、点LNG。State\\u points:Stateid,Pointid。

我需要构建一个数组来显示状态,然后显示相应的点。要做到这一点,我认为最好的方法是像本教程那样:http://www.bitsofphp.com/avoid-executing-mysql-queries-within-loops/

查询所有状态,使用StateID作为ArrayID创建一个数组
然后从points and state\\u points表中选择lat、lng和stateid。使用在第二次查询中选择的stateid作为阵列id,将点(lat和lng)添加到阵列中

global $wpdb;
$states = $wpdb->query("SELECT * from wp_states");
echo $states;
while ($state = mysql_fetch_array($states)) {
    $arrayState[$state[\'stateid\']]=$state;
}
$points = $wpdb->query("SELECT wp_state_points.statepointid, wp_state_points.stateid, wp_state_points.pointid, wp_points.pointid, wp_points.lat, wp_points.lng FROM wp_state_points, wp_points WHERE wp_state_points.pointid = wp_points.pointid");
while ($point = mysql_fetch_array($points)) {
    $arrayState[$point[\'stateid\']][\'points\'][]=$point;
}                                                      
foreach ($arrayState as $astate) {                              
    echo $astate[\'name\'];                                                       
    foreach ($astate[\'points\'] as $apoint) {
        echo $apoint[\'lat\'];                                                              
    }                                                           
}
但我收到类似这样的消息“警告:mysql\\u fetch\\u array():提供的参数在中不是有效的mysql结果资源…”

我知道我的查询正在返回数据(至少是第一个数据)。我认为wordpress查询根本不支持这一点。

我可以使用get\\u results返回数组。但要实现这一点,ArrayID必须与StateID相同

我能做些什么来实现这一目标?

谢谢

2 个回复
SO网友:Tom J Nowell

http://codex.wordpress.org/Class_Reference/wpdb

query 返回受影响的行数。而是使用get_results, 返回查询指定的所有行。您可以使用第二个参数指定如何将这些结果作为对象或数组等返回

在处理sql时,您应该只处理wpdb,很少有理由处理mysql_ 前缀php函数,就像WordPress的数据库API所做的那样。

SO网友:Jared

因此,这样做的方法是使用get\\u results作为OBJECT\\u K,stateid是查询的第一列。

然后我会对查询的点使用foreach将点添加到关联的状态?

我试图最终实现的是具有以下结构的JSON文件:

[
{
    "stateid":"001",
    "name":"Alaska",
    "points":
        {
            "point":
                [
                    {"id":"00001", "lat":"40.4038","lng":"-30.35263"},
                    {"id":"00002", "lat":"40.4013","lng":"-30.31355"},
                    {"id":"00003", "lat":"40.4023","lng":"-30.35235"},
                ]
        }
    "stateid":"002",
    "name":"Alabama",
    "points":
        {
            "point":
                [
                    {"id":"00004", "lat":"41.4038","lng":"-31.35263"},
                    {"id":"00005", "lat":"42.4013","lng":"-32.31355"},
                    {"id":"00006", "lat":"43.4023","lng":"-33.35235"},
                ]
        }

    and so on for all of the states.

}]
也许只使用一个查询更好,那么所有具有的点都有一个与之关联的状态,但我只需要引用一个即可获得状态名称?我试图避免这种情况,因为这似乎是不必要的数据传输,但也许这比运行2个查询并编辑数组要好?

结束

相关推荐

WP_QUERY中的自定义分类不起作用

我真的被难住了。我有一个特定的分类法,可以将新闻网站上的帖子分类为不同类型的“特色”帖子。问题是:当他们进行查询时,结果并不是他们应该得到的结果。以下是我所拥有的:$featured_loop = new WP_Query( array( \'featured\' => \'home-featured\', \'posts_per_page\' => \'1\') ); if ( have_posts() ): while ( $featured_loop-&g