从ajax中获取数据,同时将其放入sql查询中


GET data from ajax and put it into sql query at the same time

当用户在灼热的表单中按下submit时(当他选择了图形的宽度和长度时),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' 
 .. }
 ...

根据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注入。