用 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)