【问题标题】:How to pass a variable from Jquery to PHP using Ajax?如何使用 Ajax 将变量从 Jquery 传递到 PHP?
【发布时间】:2018-03-18 23:10:39
【问题描述】:

如何将变量从 Jquery 传递到 PHP?

var itemId = $(this).attr('name');
$.ajax({
    url: "loaditems.php",
    method: "GET",
    success: function(result){
    alert(result);
}});

我想在我的 SQL 请求结束时在 PHP 中添加一个数字。

$sql = "SELECT * FROM SmiteItems WHERE ID = ";

我知道有很多这样的问题,但其他问题是由结构更复杂的人提出的,我不明白。

【问题讨论】:

  • 向我们展示您是如何运行查询的,以便我告诉您它可能存在漏洞
  • 单单 SO 上就必须有 1,000 个示例,教程等中必须有 1,000,000 个 Internet 上的示例

标签: php jquery sql json


【解决方案1】:

使用 POST 方法,然后尝试使用 PHP PDO 进行 sql 查询 http://php.net/manual/en/pdo.query.php

 var itemId = $(this).attr('name');
    $.ajax({
        url: "loaditems.php",
        method: "POST", //change
        data: { myVar: itemId }
        success: function(result) {
            alert(result);
        }
    });

然后在你的 PHP 代码中

 //Get post value from AJAX
    $itemId = $_POST['myVar'];

    \\PDO Example
    $sql = "SELECT * FROM SmiteItems WHERE ID = ?";
    $result = $pdo->prepare($sql);
    $result->bindparam(1, $itemId);
    $result->execute();

【讨论】:

  • 为什么一定是POST方式?
  • 是的,这是因为方法。 GET 只是获取数据,但是当我想指定“我想要什么数据”又名“我只想要名称列”时,它必须发布。
【解决方案2】:

在 ajax 调用中添加 data 并在目标 url 中使用该数据:

var itemId = $(this).attr('name');
$.ajax({
    url: "loaditems.php",
    method: "GET",
    data: {number:itemId},
    success: function(result){
    alert(result);
    }
});

然后在loaditems.php中

$sql = "SELECT * FROM SmiteItems WHERE ID = " . $_GET['number'];

由于这不是数据库和安全问题,所以我不再写关于 SQL INJECTION 的内容。请使用“post”方法并阅读更多关于注射的信息。

【讨论】:

  • 改用 POST 吗?
  • 这样的sql查询容易出现sql注入!在将任何用户输入传递给数据库之前,您需要对其进行转义!另外,请使用“。”连接运算符而不是数字“+”。
  • 我已将代码从 + 更新为 . 对于获取和发布安全性之间的区别,请检查:security.stackexchange.com/questions/33837/…@MehdiBounya
  • @AliSheikhpour GET 对于敏感数据不安全,但您仍然可以使用 GET 获取数据,但这取决于我猜的上下文...
  • 你是对的。获取和发布不是这个问题的上下文。我不知道为什么我的回答被否决了,所以我添加了一些关于安全性的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
相关资源
最近更新 更多