【问题标题】:DELETE record in a row in PHP在PHP中连续删除记录
【发布时间】:2015-09-25 21:13:53
【问题描述】:

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

它是这样的:

所以基本上我这里有 3 页。
1.page.php
2.添加.php
3.删除.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');




?>

所以现在当我点击删除链接时,它必须实时删除按钮。任何想法?

【问题讨论】:

  • 改用一个按钮并将每个按钮包装在一个带有隐藏字段的表单中,或者您甚至可以使用 iframe 和 $_GET 或 ajax。这个 id={id} 不行。
  • 什么是实时,无需重新加载页面?
  • 这是什么? run_mysql_query()

标签: php html mysql


【解决方案1】:

修改你的 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 条记录吗?基本上,当我将电子邮件放在输入中并单击提交时,它会自动添加两行具有相同记录并复制我插入的内容??????知道是什么原因造成的吗????
  • 可能是因为你调用了2次run_mysql_query
  • 我指的是 add.php 顺便说一句。 :) 它正在插入两条记录。
  • 定义查询后调用 $deleteEmail = run_mysql_query($query);在 if 语句中你应该使用 $deleteEmail 变量
  • 太棒了!哈哈哈。谢谢!
【解决方案2】:

什么时候感知run_mysql_queryphp中的一个函数?

http://php.net/manual-lookup.php?pattern=run_mysql_query&scope=quickref

【讨论】:

    【解决方案3】:

    更新 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。

    【讨论】:

      【解决方案4】:
      $query = "DELETE FROM email_tbl WHERE id=".$_GET['id']." LIMIT 1";
      

      【讨论】:

        猜你喜欢
        • 2015-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多