2017-02-26 77 views
0

我想發送一個ajax發佈請求從我的數據庫中獲取一些數據。但我似乎無法將正確的數據(在這種情況下是國名)發送到我的ajax鉤子。「WordPress數據庫錯誤」。不能發送數據與我的發佈請求

JS代碼:

$.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鉤

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(); 
} 

我的連接,一切正常。但我無法通過從我的js代碼的selected_from變量發送到我的動作鉤子。

當我嘗試這段代碼時,我在我的ajax請求中得到這個錯誤代碼。

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

那麼basicly我怎麼「送」過selected_from,這樣我可以在我的SQL語句中使用它呢?

+0

呃,太笨了......謝謝!我仍然得到這個錯誤,雖然:'WordPress數據庫錯誤:[未知列'美國'在'where子句'' –

+0

是的工作,thx!是。我現在會清理輸入。只是想讓它工作第一:)! –

回答

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實際用途。

相關問題