我正在尝试发送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语句中使用它?
答案 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实际使用的内容。