PHP通过单击按钮从表中删除行
我无法传递按钮的id以根据id删除行。我应该如何正确传递idPHP通过单击按钮从表中删除行,php,html,Php,Html,我无法传递按钮的id以根据id删除行。我应该如何正确传递id <form method="POST" > <table border="1"> <tr> <th>Student Name</th> <th>Matric Number</th>
<form method="POST" >
<table border="1">
<tr>
<th>Student Name</th>
<th>Matric Number</th>
<th>IC Number</th>
<th></th>
<th></th>
</tr>
<?php
$link=mysqli_connect("localhost","root","") or die(mysqli_error());
mysqli_select_db($link,"myDataBase") or die(mysqli_error());
$query="Select * From student" or die(mysqli_error());
$result=mysqli_query($link,$query);
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["name"]."</td><td>".$row["matric"]."</td><td>".$row["ic"]."</td>
<td><input type=button value=Update></td><td><input type=submit value=Delete name=delete ><input type=hidden name=id value=".$row["id"]." ></td></tr>";
}
}else{
die("0 results");
}
if (isset($_POST['delete'])){
echo $did=$_POST['id'];
$query="Delete From student where id='$did'";
$result=mysqli_query($link,$query);
}
?>
</table>
</form>
学名
矩阵数
IC编号
您需要更改查询:
$query="Delete From student where id=$did";
反而
$query="Delete From student where id='$did'";
您需要更改查询:
$query="Delete From student where id=$did";
反而
$query="Delete From student where id='$did'";
问题是,所有包含学生ID的隐藏字段都放在一个表单中。因此,当您单击任何删除按钮时,始终会发布最后一个隐藏字段ID
。将您的表单
标记分别放在每行的删除
列中,然后仅发布单击的行ID。另外,将选择
查询置于删除
查询之后,以在删除后立即刷新HTML表。您还需要避免SQL注入
<?php
$link = mysqli_connect( "localhost", "root", "" ) or die( mysqli_error() );
mysqli_select_db( $link, "myDataBase" ) or die( mysqli_error() );
// delete record
if( isset( $_POST['delete'] ) ) {
echo $did = $_POST['id'];
$query = $link->prepare( "DELETE FROM student WHERE id=?" );
$query->bind_param( "s", $did );
$query->execute();
}
// get all records
$query = "SELECT * FROM student" or die( mysqli_error() );
$result = mysqli_query( $link, $query );
?>
<table border="1">
<tr>
<th>Student Name</th>
<th>Matric Number</th>
<th>IC Number</th>
<th>Update</th>
<th>Delete</th>
</tr>
<?php
if( $result->num_rows > 0 ) {
while( $row = $result->fetch_assoc() ) {
echo "<tr>";
echo "<td>" . $row["name"] . "</td>";
echo "<td>" . $row["matric"] . "</td>";
echo "<td>" . $row["ic"] . "</td>";
echo "<td><input type=button value=Update></td>";
echo "<td><form method='POST'>
<input type=hidden name=id value=".$row["id"]." >
<input type=submit value=Delete name=delete >
</form>
</td>";
echo "</tr>";
}
} else {
die("0 results");
}
?>
</table>
学名
矩阵数
IC编号
更新
删除
问题是,所有包含学生ID的隐藏字段都放在一个表单中。因此,当您单击任何删除按钮时,始终会发布最后一个隐藏字段ID
。将您的表单
标记分别放在每行的删除
列中,然后仅发布单击的行ID。另外,将选择
查询置于删除
查询之后,以在删除后立即刷新HTML表。您还需要避免SQL注入
<?php
$link = mysqli_connect( "localhost", "root", "" ) or die( mysqli_error() );
mysqli_select_db( $link, "myDataBase" ) or die( mysqli_error() );
// delete record
if( isset( $_POST['delete'] ) ) {
echo $did = $_POST['id'];
$query = $link->prepare( "DELETE FROM student WHERE id=?" );
$query->bind_param( "s", $did );
$query->execute();
}
// get all records
$query = "SELECT * FROM student" or die( mysqli_error() );
$result = mysqli_query( $link, $query );
?>
<table border="1">
<tr>
<th>Student Name</th>
<th>Matric Number</th>
<th>IC Number</th>
<th>Update</th>
<th>Delete</th>
</tr>
<?php
if( $result->num_rows > 0 ) {
while( $row = $result->fetch_assoc() ) {
echo "<tr>";
echo "<td>" . $row["name"] . "</td>";
echo "<td>" . $row["matric"] . "</td>";
echo "<td>" . $row["ic"] . "</td>";
echo "<td><input type=button value=Update></td>";
echo "<td><form method='POST'>
<input type=hidden name=id value=".$row["id"]." >
<input type=submit value=Delete name=delete >
</form>
</td>";
echo "</tr>";
}
} else {
die("0 results");
}
?>
</table>
学名
矩阵数
IC编号
更新
删除
警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,。警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行。如果$did
是一个整数,则将其转换为字符串是非常糟糕的如果$did
是一个整数,则将其转换为字符串是非常糟糕的非常感谢您的帮助,先生!但删除链接是什么意思?是创建test.php文件并在那里执行删除吗?test.php
可以是使用此代码的当前文件,但方法将从POST
更改为GET
。您必须使用$did=$\u GET['id']
获取要删除的记录的id。这只是第二种选择。目前的版本也运行良好。非常感谢您的帮助,先生!但删除链接是什么意思?是创建test.php文件并在那里执行删除吗?test.php
可以是使用此代码的当前文件,但方法将从POST
更改为GET
。您必须使用$did=$\u GET['id']
获取要删除的记录的id。这只是第二种选择。目前的版本也运行良好。