【问题标题】:how to delete email address from table in phpmyadmin如何从 phpmyadmin 中的表中删除电子邮件地址
【发布时间】:2018-05-23 10:42:08
【问题描述】:

我想在 phpmyadmin 中删除客户的电子邮件地址,使用 php 和 html。删除按钮正在工作,但它根本不会删除电子邮件地址。

我在学习 php 语言方面还是新手。所以,可能有些部分我做错了。

我做了 3 页; account.php、deletemail.php 和 delete.php

这是 account.php 的 php 代码

<?php 

        mysql_connect("localhost", "root","") or die(mysql_error());
        mysql_select_db("eib_clicks") or die("Cannot connect to database");
        $query = mysql_query("SELECT * FROM customer_ai WHERE username='$user' LIMIT 1");
        while($row = mysql_fetch_array($query))
        {
            Print "<tr>";

                Print '<td align="center">'. $row['username'] . "</td>";
                Print '<td align="center">'. $row['name'] . "</td>";
                Print '<td align="center">'. $row['address'] . "</td>";
                Print '<td align="center">'. $row['secondaddress'] . "</td>";
                Print '<td align="center"><a href="addaddress.php?username='. $row['username'] .'">add</a> </td>';
                Print '<td align="center">'. $row['email'] . "</td>";
                Print '<td align="center"><a href="editemail.php?username='. $row['username'] .'">edit</a> </td>';
                Print '<td align="center"><a href="deleteemail.php?username='. $row['username'] .'">delete</a> </td>';
                Print '<td align="center">'. $row['type'] . "</td>";
                Print '<td align="center">'. $row['public'] . "</td>";
                Print '<td align="center"><a href="editpublic.php?username='. $row['username'] .'">edit</a> </td>';
            Print "</tr>";
        }
    ?>

这个很好用。

deletemail.php 的 PHP 代码

<?php
session_start();
if($_SESSION['user']){
}
else{
    header("location:account.php");
}
$user = $_SESSION['user'];
$id_exists = false;
?>

第二部分代码;

<?php

                mysql_connect("localhost", "root", "") or die(mysql_error());
                mysql_select_db("eib_clicks") or die("Cannot connect to database");
                $query = mysql_query("Select * from customer_ai Where username='$user'");
                $count = mysql_num_rows($query);
                if($count > 0)
                {
                    while($row = mysql_fetch_array($query))
                    {
                        Print "<tr>";
                            Print '<td align="center">'. $row['email'] . "</td>";



                        Print "</tr>";
                    }
                }

            ?>

第三部分代码;

<?php

        Print '
        <a href="delete.php" class="btn btn-sm btn-danger" role="button" onclick="myFunction('.$row['username'] .')">Delete</a>

        ';


        ?>

我也在这个页面中添加脚本;

<script>
    function myFunction(username)
    {
    var r=confirm("Are you sure you want to delete this email?");
    if(r==true)
        {
            window.location.assign("deleteemail.php?username=" + username);
        }
    }
</script>

最后是 delete.php 的 php 代码

<?php
    session_start();
    if($_SESSION['user']){
    }
    else{
        header("location:homepage.php");
    }

    if($_SERVER['REQUEST_METHOD'] == "GET")
    {
        mysql_connect("localhost", "root","") or die(mysql_error());
        mysql_select_db("eib_clicks") or die("Cannot connect to database");

        mysql_query("DELETE FROM account_ai WHERE $email=['email']");

        header("location: account.php");
    }
?>

我在 delete.php 上尝试了所有方法,但没有任何效果。其余代码工作正常。我使用了 $row['id'] 但它删除了整行。我只想删除电子邮件地址而不是整行。请帮我。

这就是我的 customer_ai 表的样子;

table for customer_ai

【问题讨论】:

  • 您是要删除该电子邮件,同时保留该行的其余部分,还是要删除与该电子邮件匹配的整行?你的描述说的是前者,但你的代码说的是后者。
  • 我正在尝试删除电子邮件并保留其余部分。我使用的是讲师给我的代码。
  • 你想更新,而不是删除。请参阅下面的答案。

标签: php html phpmyadmin


【解决方案1】:

您要做的是更新,而不是删除。您想将电子邮件的值设置为 NULL。 UPDATE customer_ai SET email = NULL WHERE username = some_username将 some_username 替换为您的 php。

编辑:我注意到您的代码有 acccount_ai,但您的屏幕截图是 customer_ai,所以我使用了 customer_ai。

【讨论】:

    【解决方案2】:

    只需粘贴:

    删除.php

    <?php
        session_start();
        if($_SESSION['user']){
        }
        else{
            header("location:homepage.php");
        }
    
        if($_SERVER['REQUEST_METHOD'] == "GET")
        {
              $username = $_GET['username'];
            mysql_connect("localhost", "root","") or die(mysql_error());
            mysql_select_db("eib_clicks") or die("Cannot connect to database");
    
            mysql_query("UPDATE account_ai SET email = '' WHERE username = '$username'");
    
            header("location: account.php");
        }
    ?>
    

    【讨论】:

    • 请不要给出给 OP 代码添加更多安全漏洞的答案。
    • 你的意思是告诉我你在自己的项目中使用mysql_*?
    • 所以警告OP不要使用mysql_*!简单!!
    【解决方案3】:

    DELETE 删除一整行。而是使用UPDATE 并将列设置为NULL。

    UPDATE account_ai SET email = NULL WHERE username = $username
    

    如果$username 是用户提供的值,请务必对其进行转义,否则将面临 SQL 注入的风险。

    请注意mysql_connect 已弃用,请参阅http://php.net/manual/en/function.mysql-connect.php。请改用 MySQLi 或 PDO。也许你看看这个PDO tutorial。注意准备好的语句。防止 SQL 注入章节。

    【讨论】:

      【解决方案4】:

      在 delete.php 中你可以尝试如下:

      $email_address =!empty($_GET['username'])?$_GET['username']:false;
      
      if($email_address){
      
          mysql_query("DELETE FROM account_ai WHERE email='{$email_address}'  ");
       }
      

      【讨论】:

      • 请不要给出给 OP 代码添加更多安全漏洞的答案。
      猜你喜欢
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 2015-05-02
      • 2012-02-08
      相关资源
      最近更新 更多