使用Ajax调用PHP更新MySQL中的数据
我已经研究了一段时间,有很多类似的问题被问到。我尽可能多地研究,并提出了一个理论上可行的代码。。。但不管出于什么原因,它都不是。我好像不明白 我使用JQuery/AJax调用php文件并更新SQL记录。以下是代码的一般要点。剩下的基本上是一个按钮点击动作,它调用ajax函数。Php将(最终)将StoreID值添加到数组中,序列化它并将其添加到mysql中 每一段代码都是独立工作的,但当把它们放在一起时就不起作用了 Java脚本代码:使用Ajax调用PHP更新MySQL中的数据,php,jquery,ajax,Php,Jquery,Ajax,我已经研究了一段时间,有很多类似的问题被问到。我尽可能多地研究,并提出了一个理论上可行的代码。。。但不管出于什么原因,它都不是。我好像不明白 我使用JQuery/AJax调用php文件并更新SQL记录。以下是代码的一般要点。剩下的基本上是一个按钮点击动作,它调用ajax函数。Php将(最终)将StoreID值添加到数组中,序列化它并将其添加到mysql中 每一段代码都是独立工作的,但当把它们放在一起时就不起作用了 Java脚本代码: jQuery.ajax({ type:
jQuery.ajax({
type: 'POST',
url: 'storeid.php',
data: {StoreID: IDjs[x] },
success: function(reponse) {
$('#error').html('Success! SkipID: ' + IDjs[x]);
onStateNext(); },
error : function(code, message){
$('#error').html('Error Code: ' + JSON.stringify(code) + ', Error Message: ' + JSON.stringify(message));}
});
这段代码的奇怪之处在于,“Success”函数得到了输出。将显示成功回调并运行继续的脚本。。尽管它看起来并没有实际将StoreID变量发送到php文件
PHP代码(storeid.PHP):
当在没有ajax的情况下运行时,此代码也可以工作。当php直接调用时,它会正确地更新记录,但当上面的ajax脚本调用时,它不会正确地更新记录
你知道我会做错什么吗 多亏了@JayBlanchard。您可以使用firefox开发人员工具查看服务器响应,这允许查看错误消息并意识到它正在通信,但只是没有从数据库获取凭据
如果数据库文件未包含,则无法使用全局变量。我认为它不需要它,因为它在运行服务器端时工作得很好,但是由于ajax在服务器关闭数据库连接后在客户端运行,所以需要再次打开它 多亏了@JayBlanchard。您可以使用firefox开发人员工具查看服务器响应,这允许查看错误消息并意识到它正在通信,但只是没有从数据库获取凭据
如果数据库文件未包含,则无法使用全局变量。我认为它不需要它,因为它在运行服务器端时工作得很好,但是由于ajax在服务器关闭数据库连接后在客户端运行,所以需要再次打开它 警告:使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。注意:mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:$db=new mysqli(…)
和$db->prepare(“…”)
过程接口是PHP 4时代的产物,当时引入了mysqli
API,不应该在新代码中使用。这对@JayBlanchard有点帮助,我以前没有意识到我可以在Firefox中看到请求/响应。看起来它的响应是“错误更新记录”,这实际上是一件好事。。。。。可能意味着它无法获取sql凭据。警告:使用mysqli
时,您应该使用and将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。注意:mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:$db=new mysqli(…)
和$db->prepare(“…”)
过程接口是PHP 4时代的产物,当时引入了mysqli
API,不应该在新代码中使用。这对@JayBlanchard有点帮助,我以前没有意识到我可以在Firefox中看到请求/响应。看起来它的响应是“错误更新记录”,这实际上是一件好事。。。。。可能意味着它无法获取sql凭据。
$test=$_POST['StoreID'];
if (isset($test))
{
global $conn2;
$memberid = $_SESSION['memberID'];
$testarray = array(7,8,$test);
$serialized_data = serialize($testarray);
$insertsql = "UPDATE StoreIDs SET IDs = '$serialized_data' WHERE MemberID = $memberid";
if (mysqli_query($conn2, $insertsql))
{
echo "Updated with StoreID: " . $test;
} else {
echo "Error updating record: " . mysqli_error($conn2);
}
} else {echo "no isset value"; }