当用户按搜索形式提交时(如果他选择的数字的宽度和长度),如何抓取数据PHP不会看到宽度或长变量。做ajax并同时将ajax变量放入sql查询中。用户尚未登录,访客。
...
function figure(position) {
var width = parseInt(position.width);
var long = parseInt(position.long);
$.ajax({
url: 'figures.php',
type: "GET",
dataType:"json",
data: {
width: width,
long: long
},
success: function(data) {
//
}
});
}
PHP
...
public function getneededfigures() {
$width = $_GET['width'];
$long = $_GET['long'];
$sql = "SELECT * FROM figures WHERE width='$width' AND long='$long'
.. }
...
答案 0 :(得分:0)
根据AlexP的推荐修改JS:
function figure(position) {
var width = parseInt(position.width);
var long = parseInt(position.long);
$.ajax({
url: 'figures.php?width=' + width + '&long=' + long,
type: "GET",
dataType:"json",
data: {
width: width,
long: long
},
success: function(data) {
//
}
});
}
更好的做法是将变量作为参数传递,而不是直接引用$ _GET或$ _POST。如果这些值不在查询字符串中会发生什么?如果你想手动调用函数独立于HTTP请求怎么办?
$width = isset($_GET['width']) ? $_GET['width'] : false;
$long = isset($_GET['long']) ? $_GET['long'] : false;
function getneededfigures($width, $long) {
if ( $width && $long ) {
$sql = "SELECT * FROM figures WHERE width = '".some_function_to_sanitize_data($width)."' AND long = '".some_function_to_sanitize_data($long)."'";
...do stuff...
}
return false;
}
请注意,在将用户输入发送到数据库之前,还需要清理用户输入以防止SQL注入。