在PHP中删除一行记录

5

我试图删除我的数据库记录。所以基本上我创建了一个包含所有记录的表格。现在我需要做的是,当我单击“DELETE”链接时,它将删除所选行的记录。

这是它的样子:

基本上这里有3个页面。
1. page.php
2. add.php
3. delete.php

这是我的page.php文件:

<table border="1">
    <thead>
        <th>email</th>
        <th>date</th>
        <th>delete</th>
    </thead>

    <tbody>
        <tr>
        <?php 
            foreach($emails as $mail){ ?>
            <td><?php echo $mail['email']; ?></td>
            <td><?php echo $mail['date']; ?></td>
            <td><?php echo "<a href='delete.php?id=". $mail['id']. "'>DELETE</a>"; ?></td>
        </tr>
            <?php } ?>


    </tbody>
</table>

这是我的add.php文件:
<?php
    require("new-connection.php");

    session_start();

    $email = $_POST['email'];
    if(empty($_POST['email']) AND (filter_var($email, FILTER_VALIDATE_EMAIL) === false))
     {
          $_SESSION['message'] = "email cannot be blank";
     }else{
        $query = "INSERT INTO email_tbl (email, date)
              VALUES('$email', NOW())";       

    $insertEmail = run_mysql_query($query);


    if(run_mysql_query($query))
    {
        $_SESSION['message'] .= "New RECORD has been added correctly!";
    }
    else
    {
        $_SESSION['message'] .= "Failed to add new Interest"; 
    }

    }


    header('Location: email.php');




?>

这是我的delete.php文件的当前版本:
<?php
    require("new-connection.php");

    session_start();


    $query = "DELETE FROM email_tbl
            WHERE id={id} LIMIT 1";       

    $deleteEmail = run_mysql_query($query);


    if(run_mysql_query($query))
    {
        $_SESSION['message'] .= "RECORD has been DELETED correctly!";
    }
    else
    {
        $_SESSION['message'] .= "Failed to DELETE RECORD"; 
    }



    header('Location: email.php');




?>

现在,当我点击删除链接时,它必须实时删除按钮。有什么想法吗?


请使用按钮并将每个按钮包装在带有隐藏字段ID的表单中,或者您可以使用iframe和$_GET或ajax。无论如何,id={id}都不起作用。 - ArtisticPhoenix
你是指实时更新,无需重新加载页面的意思吗? - ArtisticPhoenix
什么是这个?run_mysql_query() - ArtisticPhoenix
4个回答

4

修改您的delete.php文件以获取url参数:

<?php
    require("new-connection.php");
    session_start();

    $id = $_GET['id'];

    $query = "DELETE FROM email_tbl
            WHERE id='$id' LIMIT 1";       

    $deleteEmail = run_mysql_query($query);


    if($deleteEmail)
    {
        $_SESSION['message'] .= "RECORD has been DELETED correctly!";
    }
    else
    {
        $_SESSION['message'] .= "Failed to DELETE RECORD"; 
    }

    header('Location: email.php');
?>

关于您的add.php,您正在使用以下内容:
$insertEmail = run_mysql_query($query);

    if(run_mysql_query($query))

您需要将其更改为以下内容:
$insertEmail = run_mysql_query($query);


    if($insertEmail)

你现在正在执行两次查询,通过调用run_mysql_query两次来实现。这应该可以解决问题。

哇,谢谢!@MatchesMalone。你有什么想法为什么我的INSERT代码会同时返回2条记录吗?基本上当我在输入框中放置电子邮件并单击提交时,它会自动添加两行相同的记录并复制我正在插入的内容????你知道是什么原因导致这个问题吗??? - user5072259
可能是因为您调用了两次run_mysql_query函数。 - jmattheis
我指的是 add.php。它插入了两条记录。 - user5072259
在定义查询之后,您调用$deleteEmail = run_mysql_query($query); 并且在if语句中应该使用$deleteEmail变量。 - jmattheis
太棒了!哈哈哈哈。谢谢! - user5072259
See modified answer, OP - James Joyce Alano

1

0
$query = "DELETE FROM email_tbl WHERE id=".$_GET['id']." LIMIT 1";

0

更新 delete.php 文件:

$id = $_GET['id'];

$query = "DELETE FROM email_tbl WHERE id='$id' LIMIT 1";  

同时请检查下面的部分: 您正在运行查询两次。因此很明显它会将相同的记录添加两次。

$insertEmail = run_mysql_query($query);

if(run_mysql_query($query))
{
    $_SESSION['message'] .= "New RECORD has been added correctly!";
}

修改你的代码,仅使用一次run_mysql_query。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接