使用ajax更新Mysql数据库表
Posted
技术标签:
【中文标题】使用ajax更新Mysql数据库表【英文标题】:Update Mysql database table using ajax 【发布时间】:2021-04-16 00:26:14 【问题描述】:每当我单击提交按钮时,我的 ajax 都没有给我一个成功错误或失败错误。我的 mysql 设置正确。我想更新我的数据库,因为出于某种原因,php 只是在一列中放了一个 3,所以我只想将它更新为实际的帐户类型(1、2、3、&4、&5)。我在提交按钮上有 2 个 ajax 函数,所以可能是这种情况,但我见过有超过 2 个 ajax 函数的网站,所以这不应该是问题。我认为这与 ajax 中的数据有关,但我不知道该放什么。
ajax:
$("#signUpButton").click(function()
if($("#dproPlayerAccount").html() === "Pro Player Account")
$.ajax(
type: "POST",
url: "proPlayAccountClicked.php",
dataType: "json"
).done(function(proUpdate)
console.log(proUpdate);
).fail(function(xhr, textStatus, errorThrown)
console.log("Error Requesting. Please Try Again Later.");
);
else if($("#dfreePlayerAccount").text() === "Free Player Account")
$.ajax(
type: "POST",
url: "freePlayAccountClicked.php",
dataType: "json"
).done(function(freeUpdate)
console.log(freeUpdate);
).fail(function(xhr, textStatus, errorThrown)
console.log("Error Requesting. Please Try Again Later.");
);
else if($("#dpremiumPlayerAccount").text() === "Premium Player Account")
$.ajax(
type: "POST",
url: "premiumPlayAccountClicked.php",
dataType: "json"
).done(function(update)
console.log(update);
).fail(function(xhr, textStatus, errorThrown)
console.log("Error Requesting. Please Try Again Later.");
);
else if($("#dproCreatorAccount").text() === "Pro Creator Account")
$.ajax(
type: "POST",
url: "proCreatorAccountClicked.php",
dataType: "json"
).done(function(cproUpdate)
console.log(cproUpdate);
).fail(function(xhr, textStatus, errorThrown)
console.log("Error Requesting. Please Try Again Later.");
);
else if($("#dpremiumCreatorAccount").text() === "Premium Creator Account")
$.ajax(
type: "POST",
url: "premiumCreatorAccountClicked.php",
dataType: "json"
).done(function(cpremiumUpdate)
console.log(cpremiumUpdate);
).fail(function(xhr, textStatus, errorThrown)
console.log("Error Requesting. Please Try Again Later.");
);
)
我的 PHP 文件具有相同的内容,但只是计划的值不同。例如 plan="1"(2, 3, &4, &5)。
<?php
session_start();
$link = mysqli_connect("********", "********", "********", "********");
if(mysqli_connect_error())
die("Couldn't connect to the database. try again later.");
$query = "SELECT * FROM `users`";
if($result = mysqli_query($link, $query))
$row = mysqli_fetch_array($result);
//The plan value is different for the 5 different PHP files.
$query = "UPDATE KingOfQuiz SET plan='1' WHERE ".$row['id'];
echo json_encode($query);
?>
【问题讨论】:
首先分离你的代码 .. 用简单的console.log('yes')
尝试 if/else 语句,看看 if/else 是否正常工作.. 然后直接使用每个 ajax,看看你会得到什么..在您检查一切正常后将两者结合在一起并检查
好的,我去看看!
控制台不显示任何消息
WHERE
子句中的 UPDATE
查询中存在错误。应该有类似" ... WHERE theColumn = " . $row['id'];
我没有看到 MySQL 将'3'
放在任何地方。我什至没有看到INSERT
... 另外,您应该使用准备好的语句,这样您的数据库就不会受到攻击。
【参考方案1】:
好的,让我指导你一下
仅通过重复此 ajax 代码和 if/else 语句以及检查.html() ==
和 .text() ==
来更改计划,这不是一件好事.. 捕获无线电输入的值或选择任何你会更好使用 .. 检查下一个示例
$(document).ready(function()
$('#singupform').on('submit' , function(e)
e.preventDefault();
var plan = $('#plan').val();
console.log(plan);
);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="singupform">
<label>Select Your Plan</label>
<select id="plan">
<option value="1">Free</option>
<option value="2">Pro</option>
<option value="3">Premium</option>
</select>
<button id="signupbutton">Submit</button>
</form>
仅使用一个 ajax 和一个 php 文件来更改基于使用 data:
的选择值的计划,也不需要 dataType : 'json'
,而您只检查一件事
$(document).ready(function()
$('#singupform').on('submit' , function(e)
e.preventDefault();
var plan = $('#plan').val();
$.ajax(
type: "POST",
url: "ChangeUserPlan.php",
data : plan : plan,
).done(function(updated)
console.log(updated);
).fail(function(xhr, textStatus, errorThrown)
console.log("Error Requesting. Please Try Again Later.");
);
);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="singupform">
<label>Select Your Plan</label>
<select id="plan">
<option value="1">Free</option>
<option value="2">Pro</option>
<option value="3">Premium</option>
</select>
<button id="signupbutton">Submit</button>
</form>
在你的 ChangeUserPlan.php 中
echo $_post['plan'];
在此之后,您的代码应该在控制台中返回计划值。然后开始更新表并在您的 php 中针对 sql 注入进行检查...
【讨论】:
谢谢,但由于某种原因,我的 PHP 文件根本不知道帖子值或帖子 这是一个简单的答案,我只是在过去几周内无法工作。 @PalDhillon 我认为这是因为文件目录 .. 尝试直接从浏览器 url 访问 php 文件,然后将所有 url 复制/粘贴到 ajax 中的url : 'paste the full url here'
.. 请PalDhillon 编码本身就很复杂,所以从简单开始,检查每一步,然后一切都会朝着正确的方向发展
我还有一个问题,检查 html/text 不起作用
@PalDhillon 不要使用html() ===
,它真的很难抓住。正确的值。如果您想比较文本,请使用.text().toLowerCase().trim() === 'text in lowercase here'
.. ..toLowerCase()
将文本小写并使用trim()
以避免在if($("#dfreePlayerAccount").text().toLowerCase().trim() === "free player account")
上方的代码中出现任何右/左空格.. .. 祝你好运以上是关于使用ajax更新Mysql数据库表的主要内容,如果未能解决你的问题,请参考以下文章
PHP:具有不同名称的多个按钮以使用 AJAX 更新 MySQL 数据库