用 jQuery/AJAX 更新 MYSQL

Posted

技术标签:

【中文标题】用 jQuery/AJAX 更新 MYSQL【英文标题】:Update MYSQL with jQuery/AJAX 【发布时间】:2012-05-04 18:25:13 【问题描述】:

我正在尝试使用 PhoneGap 和 jQuery Mobile 构建移动应用程序。在我的应用程序中,我有一个页面,其中包含指向 php 文件的链接,该文件更新 mysql 并转到下一页。但是对于 PhoneGap,我需要在外部服务器上拥有所有 PHP 文件,所以我不能在这个应用程序上使用我当前的解决方案。

这是我用来更新 MYSQL 的 PHP

<?php

$var = @$_GET['id'] ;

$con = mysql_connect("localhost","username","abc123");
if (!$con)
  
  die('Could not connect: ' . mysql_error());
  

mysql_select_db("database", $con);

mysql_query("UPDATE table SET condition=true
WHERE ID= \"$var\" ");

header('Location: http://1.2.3.4/test');

mysql_close($con);
?> 

那么当用户点击一个按钮时,我该如何运行这个 PHP 呢?我想使用 jQuery/AJAX?

【问题讨论】:

你能在应用程序中调用这个 php 页面的地方发送一些代码吗? 这很容易被SQL注入。切勿将用户提供的数据直接插入到查询中而不进行转义。 【参考方案1】:
<head>
<script src="jquery.js"></script>
<script>
  function UpdateRecord(id)
  
      jQuery.ajax(
       type: "POST",
       data: 'id='+id,     // <-- put on top
       url: "update.php",
       cache: false,
       success: function(response)
       
         alert("Record successfully updated");
       
     );
 
</script>
</head>
<body>
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(1);">
</body>

Sachyn Kosare 建议的那些代码确实有效,唯一的问题是 data: 'id='+id 行必须在 url: "update.php" 之上

而且,您可以将$var = $_POST['id']; 用于您的 PHP。

【讨论】:

【参考方案2】:

假设您的按钮有一个 id clickme 您在其上绑定一个事件处理程序,如下所示,我使用 on 选择器以避免在页面上不存在该按钮时执行代码的情况。您可以非常很好地绑定一个click 处理程序

$(document).on("click","#clickme",function()
    $.ajax(

        type:"POST", //GET - update query should be POST
        url: my_endpoint.php,  //your php end point
        data: jsonKey1:jsonValue1,
        success: function(data) //if success
          //do necessary things with data
        

    )
);

这就是你要找的吗?

【讨论】:

【参考方案3】:

假设上面的 PHP 代码在文件 update.php 中。然后就可以使用下面的代码了——

<head>
<script src="jquery.js"></script>
<script>
  function UpdateRecord(id)
  
      jQuery.ajax(
       type: "POST",
       url: "update.php",
       data: 'id='+id,
       cache: false,
       success: function(response)
       
         alert("Record successfully updated");
       
     );
 
</script>
</head>
<body>
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(1);">
</body>

只需在 UpdateRecord 函数中传递一个有效的 id。将您的 PHP 代码放入 update.php 文件中。为了安全起见,在您的 PHP 代码中将 $var = @$_GET['id'] ; 替换为 $var = @$_POST['id'] ; 并检查这是否适合您

【讨论】:

无论您传递什么 id,您都需要确保它指向数据库中的有效记录。还要确保“jquery.js”存在于您的文件夹中。【参考方案4】:

在你的成功功能中做点什么

success: function(response)
   
       window.location = response;
   

你的 html 应该包含

在 php 中做这样的事情

mysql_query('blah blah');
mysql_close($con);

echo "http://1.2.3.4/test";

【讨论】:

以上是关于用 jQuery/AJAX 更新 MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

AJAX PHP MYSQL 更新/编辑记录 (jQuery)

jQuery Ajax(异步改同步)

即使发生更新,jquery ajax 也总是出错

jQuery AJAX 函数

复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql

使用 jQuery AJAX 更新数据库只能使用一次