使用删除按钮从数据库中删除记录

时间:2014-07-04 02:40:04

标签: php mysql database button delete-row

我有一个包含书籍的数据库。在页面上,我有循环打印数据库中的每个记录,每个记录的标题,作者,出版商,日期和评级。我想使用每个记录底部的删除按钮来删除它。

当我点击删除按钮时,页面会更新,但记录不会被删除。

我试图找到解决这个问题的方法,但还没有。我尝试将数据库表中的book_id类别用作我的索引,以便识别每条记录并将其删除但不起作用。

以下是我的按钮表单的代码,因为它显示为html代码:

 while ($row = mysqli_fetch_array($result)) 
 {

 echo '<div id="forminput">';

$timestamp = strtotime($row['date']);

echo '<div id = "bookpicture">';
echo '<img src="images/Book Cover 8crop.jpg" alt="Book Cover">';
echo '</div>';

echo '<div id = "bookinfo">';
echo '<div id = "titleauthor">';
echo '<h3>' . htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8') . '</h3>';
echo '<p>' . htmlspecialchars($row['author'], ENT_QUOTES, 'UTF-8') . '</p>';

echo '</div>';
echo '</div>';

$id = htmlspecialchars($row['book_id'], ENT_QUOTES, 'UTF-8');

echo '</div>' ;
echo '<div id = "publisher">' ;
echo '<p>' . 'Published on' . " " . htmlspecialchars(date('F j, Y,', $timestamp),    
ENT_QUOTES, 'UTF-8') . 
" " . 'by' . " " . htmlspecialchars($row['publisher'], ENT_QUOTES, 'UTF-8') . '</p>';
echo '</div>';
echo '<div id = "formDelete">';
echo '<form name="deleteForm" method="post" id="deleteForm" action="index.php">'; 
echo '<input type="submit" value="Update" name="myAdd" id="myAdd" style = "width:  
100px" required>';
echo '<input type="submit" value="Delete" name="myDelete" id="$id" style = "width: 
100px" required>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '<hr>' ;

echo '</div>';
}
?> 

这是我的index.php文件中的代码。

else if (isset($_POST['myDelete']))
{
$ids = mysqli_real_escape_string($link, $_POST['$id']);    

$sql="DELETE FROM readbooks WHERE book_id = '$ids'";

if (!mysqli_query($link, $sql))   

{   

$error = 'Error with submission: ' . mysqli_error($link);   

include 'php/error.html.php'; 

exit();   

  } 
}

这是更新的代码。

4 个答案:

答案 0 :(得分:1)

问题是您没有尝试从表单中发送行ID。

在表单中尝试从表单

发送行ID
 echo '<input type="hidden" name="id" value="$id">'

尝试接收该参数

 $id = $_POST['id'];
 $con = mysql_connect("host address","mysql_user","mysql_pwd");
 $query = "DELETE FROM readbooks WHERE id = $id";
 mysql_query($query,$con);

答案 1 :(得分:0)

从评论转移,你实际上并没有在任何地方获得$ id。在表单中添加一个字段:

<input type='hidden' name='id' value='$id'>

然后在你的php中引用它:

$ids = mysqli_real_escape_string($link, $_POST['id']); 

答案 2 :(得分:0)

我认为您在传递给PHP代码的ID方面存在问题。尝试使用var_dump($ _ POST)来查看$ _POST变量的内容。正如我所看到的,$ _POST的索引是错误的。

<input type="submit" value="Delete" name="myDelete" id="$id" style = "width:100px" required>';

尝试将其更改为

<input type="submit" name="book_id" value="$id" style = "width:100px" required>';

在你的php中使用这个$ _POST [&#34; book_id&#34;]来获取你发布的book_id的值。

注意:属性&#34; name&#34;输入标记的内容将是$ _POST变量的索引

我知道您希望同时拥有删除和更新按钮。问题是你背后的逻辑。你需要有一个隐藏的字段并将id放入其中。尝试使用它。

echo '<form name="deleteForm" method="post" id="deleteForm" action="index.php">'; 
echo '<input type="hidden" value="$id" name="book_id" id="myAdd" required>';
echo '<input type="submit" value="Update" name="action" id="myAdd" required>';
echo '<input type="submit" value="Delete" name="action" id="$id" required>';
echo '</form>';

在你的php代码中使用尝试有这样的条件:

  

$ book_id = $ _POST [&#34; book_id&#34;];

if($_POST["action"] == "delete")
{ 
   //do your deletion code here. use the variable $book_id  
} 
else{
    //do your update code here.use the variable $book_id  
}

答案 3 :(得分:0)

由于您现在使用mysqli,请使用预准备语句。不要直接使用您的用户输入查询!例如:

$books = array();
// connection
$con = new mysqli('localhost', 'your_username', 'password_of_username', 'your_database');

if(isset($_POST['myDelete'])) {
    $book_id = $_POST['myDelete']; // get the variable id
    $stmt = $con->prepare('DELETE FROM readbooks WHERE book_id = ?');
    $stmt->bind_param('i', $book_id);
    $stmt->execute();
}

$result = mysqli_query($con, 'SELECT * FROM readbooks');
while($row = $result->fetch_assoc()) {
    $books[] = $row;
}

?>

<form method="POST">
    <table border="1" cellpadding="10">
    <tr>
        <th>Title</th>
        <th>Author</th>
        <th>Publisher</th>
        <th></th>
    </tr>
    <?php foreach($books as $book): ?>
        <tr>
            <td><?php echo $book['title']; ?></td>
            <td><?php echo $book['author']; ?></td>
            <td><?php echo $book['publisher']; ?></td>
            <td><button type="submit" name="myDelete" value="<?php echo $book['book_id']; ?>">Delete</button></td>
        </tr>
    <?php endforeach; ?>
    </table>
</form>