【问题标题】:Update sql in javascript function在javascript函数中更新sql
【发布时间】:2013-08-22 11:40:20
【问题描述】:

我有一个普通的 html 表格,其中每个单元格都包含一个名称。我为这些单元格中的每一个添加了一个函数,如果它是白色的,则将单元格的背景颜色变为绿色,反之亦然。但是,我还想在单击单元格时更新 mySql 数据库,但我似乎无法找到一个好的方法来执行此操作,而无需重新加载页面(我不希望这样做)或使用 javascript连接到服务器(这似乎是一个非常糟糕的做法)。此时页面已经加载完毕。有人有什么好的建议吗?

<script type="text/javascript">
var tbl = document.getElementById("table");
        if (tbl != null) {
            for (var i = 1; i < tbl.rows.length; i++) {
                for (var j = 0; j < tbl.rows[i].cells.length; j++)
                    tbl.rows[i].cells[j].onclick = function () { getval(this); };
            }
        }

        function getval(cel) {
            if(cel.style.backgroundColor == "green")
            {
                 cel.style.backgroundColor = "white";

                 // Here I would like to update my datebase with mySql
                 // query(UPDATE team SET attended=0 WHERE name = cel.innterText)
                 // (name associated with the cell)

            }
            else
            {
                cel.style.backgroundColor = "green";
                 // Here I would like to update my datebase with mySql
                 // query(UPDATE team SET attended=1 WHERE name = cel.innterText)
                 // (name associated with the cell)
            }
        }   
</script>

【问题讨论】:

  • @Niels Sønderbæk 您可能希望将 Ajax 与 JQuery 一起使用。性能方面,JQuery 与 Ajax 相比更好。希望能帮助到你。搜索 Ajax 和 JQuery 从 MySQL 检索数据。

标签: php javascript mysql database


【解决方案1】:

从广义上讲,您需要将应用程序的一部分转换为服务,并通过来自您页面的异步 HTTP 请求对其进行调用(这属于“AJAX”名称)。

该服务可以在您的服务器上编写为额外的 PHP 脚本,它可能不一定返回 HTML 文档,但可能返回 XML 或 JSON(后者现在可能更流行),这将由您的 JavaScript 脚本处理必要时在浏览器中进行进一步操作(例如,仅当此请求成功时才将背景变为白色)。

处理 SQL 查询的正是这个 PHP 脚本。

作为一般准则,不要在客户端(在您的 JavaScript 脚本中)准备或处理任何 SQL,并确保您使用 prepared statements when running your SQL queries。 (我只是这么说,因为您显然是新手,您将不可避免地在这里或各种博客上找到代码的 sn-ps,人们只是通过使用查询中的变量将他们放入 SQL 语句中的变量字符串。这是非常糟糕的做法。)

编辑

我实际上只需要W3Schools to have a bad example of MySQL query that is vulnerable to SQL injection(问题出在$sql="SELECT * FROM user WHERE id = '".$q."'";)。不要使用这个例子。我会避开 W3Schools,请参阅 http://www.w3fools.com/

【讨论】:

    【解决方案2】:

    SQL 是服务器端,而不是客户端。您需要使用 AJAX 将数据发送到您的服务器,然后服务器将使用 SQL 进行保存。

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 2014-04-24
      • 2019-02-01
      • 2012-10-23
      • 2020-05-19
      相关资源
      最近更新 更多