首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从php页面删除时,始终删除最后的数据库行。

从php页面删除时,始终删除最后的数据库行。
EN

Stack Overflow用户
提问于 2014-02-17 12:57:46
回答 2查看 614关注 0票数 0

当我试图删除某一特定记录时,我从数据库表中获取数据,无论我单击什么,都删除我做错了什么,这是在提交/单击del按钮后使用的代码m

代码语言:javascript
运行
复制
// DELETE

if(isset($_POST['del']))
{
require'conn.php';
$delete_id = $_POST['del_id'];
print_r($_POST);
die;

$del_stmt = "DELETE FROM signup WHERE ID =$delete_id";
mysqli_query($conn,$del_stmt);
mysqli_execute($del_stmt);
$row=mysqli_affected_rows($conn);
if($row==1)
{
echo "<h1>".' sucess ! record was deleted' ."</h1>";
}
else
{
echo "<h1>".' record was not deleted '."</h1>";
}

mysqli_close($conn);
}
include'fetchtable.php';

这是我的表结构和del按钮代码

代码语言:javascript
运行
复制
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">

<?php
echo "<table border='1' cellpadding='2' cellspacing='2'";
echo "<tr><td>ID</td><td>First Name</td><td>Last Name</td><td>Gender</td><td>Email</td><td>Password</td><td>Delete</td><td>Edit</td>";
while (mysqli_stmt_fetch($stmt))
{
echo"<tr>";
echo "<td>".$id."</td>";
echo "<td>". "$fn" ."</td>";
echo "<td>". "$ln" ."</td>";
echo "<td>". "$gen"."</td>";
echo "<td>". "$email"."</td>";
echo "<td>". "$pass" ."</td>";
echo '<td> <input type="hidden" name="del_id" value="'.$id.'" />'. '<input type="submit" name="del" value="delete" /> ';
echo '<td> <input type="hidden" name="edit_id" value="'.$id.'" />'.' <input type="submit" name="edit" value="edit" /> ';
echo"</tr>";
}
?>
</form>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-17 13:28:30

正如所说,每一行都需要一个表单,或者另一个逻辑;

一种解决方案是将<form ...>...</form>放在循环中:

这是- AFAIK -不正确,在不符合HTML std。并且只适用于某些浏览器,因为<table><form> ar混合使用顺序错误,我只使用它作为示例来向您展示问题。

代码语言:javascript
运行
复制
<?php
echo "<table border='1' cellpadding='2' cellspacing='2'";
echo "<tr><td>ID</td><td>First Name</td><td>Last Name</td><td>Gender</td><td>Email</td><td>Password</td><td>Delete</td><td>Edit</td>";
while (mysqli_stmt_fetch($stmt))
{
echo "<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">"
echo"<tr>";
echo "<td>".$id."</td>";
echo "<td>". "$fn" ."</td>";
echo "<td>". "$ln" ."</td>";
echo "<td>". "$gen"."</td>";
echo "<td>". "$email"."</td>";
echo "<td>". "$pass" ."</td>";
echo '<td> <input type="hidden" name="del_id" value="'.$id.'" />'. '<input type="submit" name="del" value="delete" /> ';
echo '<td> <input type="hidden" name="edit_id" value="'.$id.'" />'.' <input type="submit" name="edit" value="edit" /> ';
echo"</tr>";
echo "</form>"

我更希望表单中只有一个隐藏字段,并使用submit按钮的onClick事件设置该字段的值。

只剩下最后一行:

代码语言:javascript
运行
复制
...
echo '<td> <input type="submit" name="del" value="delete" onclick="form.row_id.value='$the id$';"/>'
echo '<td> <input type="submit" name="edit" value="edit" onclick="form.row_id.value='$the id$';"/>'
echo"</tr>";
}
?>
<input ID='row_id' type="hidden" name="del_id" value="no set till now" />'
</form>
票数 0
EN

Stack Overflow用户

发布于 2014-02-17 13:10:17

每个操作都需要有多个操作,因此您需要将代码作为

代码语言:javascript
运行
复制
    while (mysqli_stmt_fetch($stmt)){
    echo '<form action="'.htmlspecialchars($_SERVER["PHP_SELF"]).'" method="post">' ;
    echo "<tr>";
    echo "<td>".$id."</td>";
    echo "<td>". "$fn" ."</td>";
    echo "<td>". "$ln" ."</td>";
    echo "<td>". "$gen"."</td>";
    echo "<td>". "$email"."</td>";
    echo "<td>". "$pass" ."</td>";
    echo '<td> <input type="hidden" name="del_id" value="'.$id.'" />'. '<input type="submit" name="del" value="delete" /> ';
    echo '<td> <input type="hidden" name="edit_id" value="'.$id.'" />'.' <input type="submit" name="edit" value="edit" /> ';
    echo "</tr>";
    echo "</form>";

}

另外,您的代码不安全,您需要对POST数据使用mysqli_real_escape_string()。或准备好的陈述

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21829751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档