PHP删除按钮总是开始删除最后一行
在此处输入图像描述 好的,这对你们来说可能很简单,因为你们有经验,但我不明白为什么每次我在表格的第一行点击“删除”按钮时,它都会删除最后一行,而不是我点击“删除”的行。只发生在第一行。第二行将完全删除数据库中的数据 我的代码有什么问题吗?或者我的表结构有问题吗?我已经提供了两个单独的php文件的代码,即booklist.php和edit.php。我非常感谢您的帮助,因为我对php非常陌生。还不熟悉所有的规则什么的。谢谢PHP删除按钮总是开始删除最后一行,php,mysql,Php,Mysql,在此处输入图像描述 好的,这对你们来说可能很简单,因为你们有经验,但我不明白为什么每次我在表格的第一行点击“删除”按钮时,它都会删除最后一行,而不是我点击“删除”的行。只发生在第一行。第二行将完全删除数据库中的数据 我的代码有什么问题吗?或者我的表结构有问题吗?我已经提供了两个单独的php文件的代码,即booklist.php和edit.php。我非常感谢您的帮助,因为我对php非常陌生。还不熟悉所有的规则什么的。谢谢 //booklist.php below echo "<form
//booklist.php below
echo "<form method='POST' action='edit.php'>";
while($row = mysql_fetch_array($result))
{
$bookID_Var = $row['No'];
$titleVar = $row['Title'];
$authorVar = $row['Author']; //authorVar is a variable container for the value of Author row in librarydatabase
$ISBN = $row['ISBN'];
echo "<tr>";
echo "<td>" .$bookID_Var. "</td>";
echo "<td>" . $titleVar. "</td>"; // there's no need to quote variables. In this line, we used variables $authorVar and $titleVar
echo "<td>" . $authorVar. "</td>";
echo "<td>" . $ISBN . "</td>";
echo "<td> <input type='submit' value='Edit'> </td>"; // Edit button
echo "<td> <input type='submit' name='delete' value='Delete'> </td>"; // Delete button
echo "</tr>";
echo "<input type='hidden' name='bookID' value=' " .$bookID_Var. " '>";
} // end of while loop
echo "</form>";
//edit.php below
<?php
if (isset($_POST['delete'])) {
echo "entered delete if block <br />";
echo "Value: " . $_REQUEST['bookID'];
$bookID = $_REQUEST['bookID'];
$sql = " DELETE FROM booklist WHERE No='$bookID' ";
$result = mysql_query($sql);
if ($result) {
echo "Successfully deleted" . "Book ID: " . $bookID;
}
} // end of main if
?>
//booklist.php如下
回声“;
while($row=mysql\u fetch\u数组($result))
{
$bookID_Var=$row['No'];
$titleVar=$row['Title'];
$authorVar=$row['Author'];//authorVar是librarydatabase中Author行值的变量容器
$ISBN=$row['ISBN'];
回声“;
回显“$bookID_Var.”;
echo“$titleVar.”;//不需要引用变量。在这一行中,我们使用了变量$authorVar和$titleVar
回显“$authorVar.”;
回音“$ISBN.”;
echo”“;//编辑按钮
echo”“;//删除按钮
回声“;
回声“;
}//while循环结束
回声“;
//下面是edit.php
首先。遵守惯例。将您的主键命名为id。第二,尝试回显您的查询。如果您的$\u请求['bookID']==14?
:-)替换,您确定吗
$sql = " DELETE FROM booklist WHERE No='$bookID' ";
到
并测试通过哪个id我确信存在通过id的问题。您应该使用链接操作,而不是基于行提交要删除的操作:
例如:
更改:
<input type='submit' name='delete' value='Delete'>
到
如果对整个数据集使用一个表单,则隐藏字段的每行名称都相同。最后一个似乎比之前所有的都重要
有更好的方法传递每一行的id,一个简单的方法是将删除逻辑分离到delete.php
,然后您可以将delete按钮作为链接,而不是表单,并将每一行链接到delete.php?bookid=
尝试以下方法:-
使用超链接
不输入
echo "<a href='edit.php?act=delete&id=<?php echo $bookID; ?> '>Delete</a>";
echo”“;
或php代码:-
<?php
if(isset($_GET['act']) && $_GET['act']=='delete'){
$bookID=$_GET['act'];
$sql = " DELETE FROM booklist WHERE No='$bookID' ";
}
它与phpmyadmin工具相关,而不是与php语言相关感谢您的帮助。使用超链接并将其重定向到单独的delete.php文件解决了我的问题。是否建议在传递值时使用超链接而不是输入/按钮?谢谢,谢谢,回音帮助我调试。“谢谢你的帮助。谢谢,”伊姆兰说。我很感谢你的帮助,这确实有帮助。我把它放在一个单独的deleted.php文件中。这让我调试起来更容易。非常感谢。
echo "<a href='edit.php?act=delete&id=<?php echo $bookID; ?> '>Delete</a>";
<?php
if(isset($_GET['act']) && $_GET['act']=='delete'){
$bookID=$_GET['act'];
$sql = " DELETE FROM booklist WHERE No='$bookID' ";
}