使用 jQuery 从数据库中删除
Posted
技术标签:
【中文标题】使用 jQuery 从数据库中删除【英文标题】:Delete from database using jQuery 【发布时间】:2021-04-09 01:14:37 【问题描述】:我想行。 我已经使用 php 检索了数据库表,并希望在单击删除按钮时从数据库中删除该行。
这是我的代码。 adm_complaints.php
<?php include('register.php') ?>
<!DOCTYPE html>
<html>
<head><title>AMC Hostel</title>
</head>
<body>
<table id="t02">
<tr class="header">
<th>Student name</th>
<th>Complaint</th>
<th>Date of complaint</th>
<th></th>
</tr>
<tbody>
<?php
$sql="select student_name, complaint, date_of_complaint from complaints";
$result = $conn->query($sql);
?>
<?php while($row = mysqli_fetch_assoc($result)) ?>
<tr role="row" class="complaints_row">
<td class="name"><?php echo $row['student_name']; ?></td>
<td><?php echo $row['complaint']; ?></td>
<td><?php echo $row['date_of_complaint']; ?></td>
<td><button class="show-name">Delete</button></td>
</tr>
<?php ?>
</table>
<script>
$(".show-name").click(function()
var $row = $(this).closest("tr");
var $text = $row.find('.name').text();
$.ajax(
url : "delete.php",
success: function(data)
alert('Directory created');
);
);
</script>
在这里,我希望在单击删除按钮时从 MySQL 数据库中删除该行。 这是我的 delete.php
<?php
include 'adm_complaints.php';
$host="localhost";
$port=3306;
$socket="MySQL";
$user="root";
$password="";
$dbname="hostel_management";
$conn = new mysqli($host, $user, $password, $dbname, $port, $socket)
or die ('Could not connect to the database server' . mysqli_connect_error());
$resolve="delete from complaints where student_name='$text'";
$resolved=mysqli_query($conn, $resolve) or die(mysqli_error($conn));;
?>
当我单击删除按钮时,警报框显示“已创建目录”,但该行并未在数据库中删除。 我是 JQuery 的新手,所以即使我犯了任何愚蠢的错误,也请告诉我。 提前致谢。
【问题讨论】:
你不能以这种方式在 PHP(服务器)中使用 JS(客户端)变量...多研究 AJAX。 你不需要 jQuery 来完成这么简单的任务 - 使用 vanilla JS:blog.garstasio.com/you-dont-need-jquery/ajax 在代码中使用die(mysqli_error($conn));
是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?
这能回答你的问题吗? What is the difference between client-side and server-side programming?
【参考方案1】:
在 $.ajax - 不要发送 student_name 在 php - $text - 它是什么,它来自哪里?
试试
$.ajax(
type: "POST",
url : "delete.php",
data: 'studen_name':$row ,
success: function(data)
alert('Send request for delete');
);
在删除.php中
<?php
include 'adm_complaints.php';
$host = "localhost";
$port = 3306;
$socket = "MySQL";
$user = "root";
$password = "";
$dbname = "hostel_management";
if (isset($_POST['studen_name']) && $_POST['studen_name'] != '')
$mysqli = new mysqli($host, $user, $password, $dbname, $port, $socket);
if (mysqli_connect_errno())
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
if ($stmt = $mysqli->prepare("delete from complaints where student_name=?"))
$stmt->bind_param("s", $_POST['studen_name']);
$stmt->execute();
printf("%d Row deleted.\n", $stmt->affected_rows);
$stmt->close();
$mysqli->close();
else
echo 'No parameter';
【讨论】:
代码更正-免sql注入和死() 干得好。我将代码格式化为更好看。您应该注意的另一件事是,我们尝试教所有用户启用 mysqli 错误报告。如果您不知道该怎么做,可以在这里查看How to get the error message in MySQLi? 这将使您的答案更好。 它也应该写类而不是写程序并且使用MVC框架并且用户不应该是“root”并且js脚本应该在一个单独的文件中并且应该使用htmlspecialchars来绘制表格和应该使用 include_onec 而不是 include。 (> ‿◠) ✌ 是的,正如您所见,回答此类低质量问题通常不是一个好主意。它们对我们很少有用。最好把精力花在更好的问题上;它更有价值。 我修复了代码 - 声誉不应该恢复吗?以上是关于使用 jQuery 从数据库中删除的主要内容,如果未能解决你的问题,请参考以下文章
在 jquery 中执行 sql 查询,以便从 html 表和数据库中删除数据