数据库查询不起作用,Wordpress

时间:2015-08-21 15:39:46

标签: php mysql database wordpress

我一直在跟踪Steve Marks的教程,该教程将帖子中的信息添加到新的SELECT * FROM users WHERE us_username = 'has$$1234nd' AND us_password = '1234' 以及通常的Database Table。但无论我尝试什么,它都不会将信息存储在新表中,任何人都可以看到我出错的地方吗?

教程可在此处获取:http://biostall.com/performing-a-radial-search-with-wp_query-in-wordpress 我的帖子类型是postmeta,我将自定义帖子类型的名称与函数中的名称相同,以查看我是否遗漏了某些内容。

我曾经在db中创建表的festival-event是:

SQL

我的CREATE TABLE IF NOT EXISTS `lat_lng_post` ( `post_id` bigint(20) unsigned NOT NULL, `lat` float NOT NULL, `lng` float NOT NULL ) ENGINE=InnoDB; 文件中的函数是:

functions.php

我一直在研究问题可能是什么,但没有运气,我真的卡住了。附上了PHPMyAdmin的图像,因此您可以看到db enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

如果没有看到您正在关注的教程,很难说出问题所在。但是,这个区块让我觉得这是一种非常奇怪的检查帖子类型的方法:

if ( 'location' != $_POST['festival-event'] )   
{  
    return;  
}  

尝试将该块更改为以下内容:

if ( get_post_type( $post_id ) != 'festival-event'] )   
{  
    return;  
}  

或者,如果您使用的是WordPress 3.7或更高版本,则可以完全删除该块并挂钩save_post_festival-event。在这种情况下,您的最后一行看起来像

add_action('save_post_festival-event', 'save_lat_lng')

编辑:使这项工作与ACF

function save_lat_lng( $post_id )   
{  


    // Check that we are editing the right post type  
    if ( get_post_type($post_id) != 'festival-event' || empty($_POST['acf'] ))   
    {  
        return;  
    }  

    global $wpdb; 
    $fields = $_POST['acf'];

    // Check if we have a lat/lng stored for this property already  
    $check_link = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM lat_lng_post WHERE post_id = %d", $post_id
    ));  
    if (!empty($check_link))
    {  
        // We already have a lat lng for this post. Update row  
        $wpdb->update(   
            'lat_lng_post',   
            array(   
                "lat" => $fields['lat_field_name'],  
                "lng" => $fields['lng_field_name']  
            ),   
            array( "post_id" => $post_id ),   
            array(   
                "%f",  
                "%f"  
            )  
        );  
    }  
    else  
    {  
        // We do not already have a lat lng for this post. Insert row  
        $wpdb->insert(   
            "lat_lng_post",   
            array(   
                "post_id" => $post_id,  
                "lat" => $field['lat_field_name'],  
                "lng" => $field['lng_field_name']  
            ),   
            array(   
                "%d",   
                "%f",  
                "%f"  
            )   
        );  
    }  
}  
add_action( 'acf/save_post', 'save_lat_lng', 1 );

*注意,您必须将lat_field_namelng_field_name更改为您通过ACF创建字段时设置的内容。

我还更改了您的查询以使用$wpdb->prepare

虽然与此问题无关,但我建议您不要创建没有wordpress前缀的自定义表格wp_

答案 1 :(得分:0)

虽然来自@GentlemanMax的答案相对有用,但实际的错误是新手错误并由我在另一个网站上解决,答案是这个

if ( 'festival-event' != $_POST['post_type'] )

而不是这个

if ( 'post_type' != $_POST['festival-event'] )