【问题标题】:How can you pass a sql query through ajax?如何通过 ajax 传递 sql 查询?
【发布时间】:2015-12-13 19:58:16
【问题描述】:

我有 sql 查询需要传递到 ajax 文件。

$qry = mysqli_query($this->con,"SELECT * FROM products");

我已经在html中包含了变量,例如:

<input type="button" data-qry="'.$qry.'" id="button" value="click">

我使用下面的ajax jquery代码来传递它:

$('#button').click(function(){
    array = $(this).attr('data-qry');
    $.ajax({        
        type    : 'POST',
        dataType : 'json',
        url     : 'ajax.php',
        data    : 'qry='+qry,
        success : function(data) {
            $('#result').html(data);
        }
    });
});

我希望能够打开ajax.php并执行

$qry = $_POST['qry'];
$row = mysqli_fetch_assoc($qry);

这当然行不通。我如何通过查询,是否需要通过 JSON 以某种方式完成?

【问题讨论】:

  • 允许用户指定你正在执行的SQL查询听起来是一个非常危险的想法。希望您信任您的用户。
  • 还有什么其他方法可以做到这一点?
  • 这完全取决于你想要做什么。如果您希望您的用户编写自己的 SQL 查询,那么这种方法一旦奏效就很好。但真的不清楚为什么你要允许这样做。如果您的用户可以信任,那很好,但仍然值得一提,以防其他人遇到这个问题。
  • 如果恶意用户找到了 AJAX 脚本发送到的页面,他们可以输入delete from users(假设您有一个 users 表),然后您的所有用户都将被删除;除其他外(XSS 注入所有数据等)..

标签: php jquery mysql json ajax


【解决方案1】:

在按钮的开头,您将值分配给变量数组

array = $(this).attr('data-qry');

但是你用ajax发送qry

data    : 'qry='+qry,

解决此问题的方法是发送您为其赋值的变量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 2017-11-29
    • 2021-01-07
    • 2017-06-10
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多