“WordPress数据库错误”。无法通过我的帖子请求

时间:2017-02-26 18:34:57

标签: php jquery ajax wordpress

我正在尝试发送ajax post请求以从我的数据库中获取一些数据。但我似乎无法将正确的数据(在本例中为国家名称)发送到我的ajax挂钩。

js code:

    $.ajax({
        url: '/wp-admin/admin-ajax.php',
        type: 'post',
        dataType: 'json',
        data: {
            action: 'country_from',
            selected_from: selected_from
        },
        success: function (data) {
            console.log("data " + data);
        },
    });

Php ajax hook

function country_from(){
    global $wpdb;
    $country_from_data = $wpdb->get_results("SELECT * FROM `ringa` WHERE land = selected_from", ARRAY_A);
    echo json_encode($country_from_data);
    wp_die();
}

我的联系和一切正常。但我不能将selected_from变量从我的js代码发送到我的动作钩子。

当我尝试使用此代码时,我在我的ajax请求中收到此错误代码。

WordPress database error: [Unknown column 'selected_from' in 'where clause']
SELECT * FROM `ringa` WHERE land = selected_from

基本上如何“发送”selected_from,以便我可以在我的sql语句中使用它?

1 个答案:

答案 0 :(得分:1)

selected_from是变量,而不是列/字符串。因此需要将其作为$_POST['selected_from']进行访问,然后需要引用它,因为当它到达数据库时它将是一个字符串。

$country_from_data = $wpdb->get_results("SELECT * FROM `ringa` WHERE land = '$_POST['selected_from']'", ARRAY_A);

偶尔会有效,如果出现单一报价则会失败。它还为您打开SQL注入。你应该使用参数化查询,我不知道WP,但它们应该有一些功能。

类似的东西:

$country_from_data = $wpdb->prepare??("SELECT * FROM `ringa` WHERE land = ?", ARRAY_A);
$country_from_data->execute(array($_POST['selected_from']));

这是PDO语法,您需要找到WP实际使用的内容。