Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP删除按钮总是开始删除最后一行_Php_Mysql - Fatal编程技术网

PHP删除按钮总是开始删除最后一行

PHP删除按钮总是开始删除最后一行,php,mysql,Php,Mysql,在此处输入图像描述 好的,这对你们来说可能很简单,因为你们有经验,但我不明白为什么每次我在表格的第一行点击“删除”按钮时,它都会删除最后一行,而不是我点击“删除”的行。只发生在第一行。第二行将完全删除数据库中的数据 我的代码有什么问题吗?或者我的表结构有问题吗?我已经提供了两个单独的php文件的代码,即booklist.php和edit.php。我非常感谢您的帮助,因为我对php非常陌生。还不熟悉所有的规则什么的。谢谢 //booklist.php below echo "<form

在此处输入图像描述

好的,这对你们来说可能很简单,因为你们有经验,但我不明白为什么每次我在表格的第一行点击“删除”按钮时,它都会删除最后一行,而不是我点击“删除”的行。只发生在第一行。第二行将完全删除数据库中的数据

我的代码有什么问题吗?或者我的表结构有问题吗?我已经提供了两个单独的php文件的代码,即booklist.php和edit.php。我非常感谢您的帮助,因为我对php非常陌生。还不熟悉所有的规则什么的。谢谢

//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'  ";
}