从已填充的表中删除行


Deletion of rows from populated table

我目前面临一个奇怪的问题,因为我的调试页面没有任何错误。我的表由几行组成,只有表的第一行不能删除。

样品形式:

$DB = new PDO('sqlite:database/Sample.db');
$result = $DB->query("select * from staff");        
foreach ($result as $row)
{
    $StaffNo= $row['StaffNo'];
    $Name= $row['Name'];
    $TelNo= $row ['TelNo']; 
 echo "<tr>";
//Go to remove.php to remove
echo "<form action='"Remove.php'" method='"post'">";
echo "<input type='"hidden'" name='"StaffNo'" value='"$StaffNo'">";
echo "<input type='"submit'" onclick='"return confirm('Yes/No')'"/>";
echo "</form>";
 echo "</td>";
echo '<td data-column-name="Name" char="data">'.$Name.'</td>';
echo '<td data-column-name="TelNo" char="data">'.$TelNo.'</td>';
</tr>
}

Remove.php:

$StaffNo= $_POST["StaffNo"];
$DB = new PDO('sqlite:database/Sample.db');
$DB->query("DELETE FROM Staff WHERE StaffNo=".$StaffNo);
@header("location:view.php");

从上面的代码中,我可以删除除第一行以外的所有示例记录。它不会被删除。。。如果我做错了什么,请告知。。。。

我试过你的代码,除了坏表代码外,一切似乎都很好。确保您的表格正确无误(<table><tr><td>Content</td></tr></table>)。在您的问题中,第一个文件的第9行缺少一个打开的<td>,也缺少<table>标记。有些浏览器不能很好地处理坏表,这可能会打乱你的表单

如果$StaffNo是空字符串,那么您的查询也会中断,所以请仔细检查。

您也可以尝试删除header()调用并使用$DB->errorInfo()打印错误。

要将变量i注入隐藏字段,应键入".$StaffNo。"而不是"$StaffNo"。它可能不会删除表的第一行,因为它是唯一定义了StaffNo的表。