繁体   English   中英

如何在MySQL和PHP中删除表行?

[英]How to delete table rows in MySQL and PHP?

我想使用MySQL和PHP从数据库中删除表行。 我已经在互联网上进行搜索,但无法弄清楚自己在做什么错。 我有亲近的感觉。

如果我经过删除链接,则会显示一个链接,其中显示要删除的行的ID号。 但是,如果我单击它,它将无法正常工作。

这是我的admin.php代码

<?php
    if(!isset($_COOKIE['E2ingelogd'])) {
        header("location:../../index.php");
    }

    $username = "root";
    $password = "";
    $hostname = "localhost";

    $dbhandle = mysql_connect($hostname, $username, $password) or die("Kan niet inloggen");

    $selected = mysql_select_db("login", $dbhandle);





        if(isset($_POST['team'])){
            $team = $_POST['team'];
            $ID = $_POST['id'];         

            $query = mysql_query("SELECT * FROM e2teams WHERE Team='$team' and ID='$ID'");
            if(mysql_num_rows($query) > 0 ) { //check if there is already an entry for that username
                echo "$team bestaat al!";
            }
            else{
                mysql_query("INSERT INTO e2teams (Team) VALUES ('$team')");
                header("location:e2admin.php");
            }
    }

    mysql_close();
?>

<html><head>
<link href='http://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
<link href="../css/layout.css" rel="stylesheet" type="text/css"></head>
    <body>
    <div class="wrapper">
            <div class="header">
                <div class="logo"><img height="140" src="../images/boyslogo.png"> </div>
                <div class="titelpagina">Vroomshoopse Boys E2 admin panel</div>
                <div class="uitloggen"><a href="../../logout.php">Uitloggen</a></div>
            </div>
      <div class="content">
                <div class="teamstoevoegenvak">
                    <div class="titelbalk">
                        <h1>Voeg teams toe</h1>

                            <form style="border:0px; margin:0px; padding:0px"; action="e2admin.php" method="POST">
                                <input width="400" maxlength="400" type="text" name="team" placeholder="Team naam" /><br>
                                <input type="submit" value="Toevoegen" />
                            </form></div>
                 </div>
                    <div clas="toegevoegdeteamsvak">
                    <div class="titelbalktoege">
                        <h1>Toegevoegde teams</h1>
                    </div>
                   <div class="deteams">
                    <?php
                        $table = "e2teams";
                        $sql = "SELECT * FROM e2teams";
                        $result = mysql_query($sql, $dbhandle);
                        if(mysql_num_rows($result) > 0){
                            $team = array();
                            while($row = mysql_fetch_array($result)) {

                                echo "<table><tr><td class='styled-td'>";
                                echo $row['Team']. '</td><td></td><td><a href="edit.php?edit='.$row['ID'].'">Bewerk</a></td><td><a href="delete.php?del='.$row['ID'].'">Delete<br>';
                                echo "</td></tr></table>";
                                $team = $row['Team'];
                            }
                        }
                        mysql_data_seek($result, 0);
                    ?>
                    </div>
                    </div>

      </div>
      <div id="volgendewedstrijd">      <form action="" method="post">
<select name="dropdown">
<?php
mysql_data_seek($result, 0);

if(mysql_num_rows($result) > 0){
    while($row = mysql_fetch_array($result)) {
       echo '<option value="">' . $row['Team'] . '</option>';
    }
}
?>
</select>
</form></div>
        </div>

    </body>
</html>

删除所在的代码段是这样的:

if(mysql_num_rows($result) > 0){
                                $team = array();
                                while($row = mysql_fetch_array($result)) {

                                    echo "<table><tr><td class='styled-td'>";
                                    echo $row['Team']. '</td><td></td><td><a href="edit.php?edit='.$row['ID'].'">Bewerk</a></td><td><a href="delete.php?del='.$row['ID'].'">Delete<br>';
                                    echo "</td></tr></table>";
                                    $team = $row['Team'];
                                }
                            }
                            mysql_data_seek($result, 0);
                        ?>

这是我的delete.php:

<?php
    if(!isset($_COOKIE['E2ingelogd'])) {
        header("location:../../index.php");
    }

    $username = "root";
    $password = "";
    $hostname = "localhost";

    $dbhandle = mysql_connect($hostname, $username, $password) or die("Could not connect to database");

    $selected = mysql_select_db("login", $dbhandle);

    mysql_query("DELETE FROM e2teams WHERE ID = $_GET[id]");
    echo "Team is deleted";
    header('location: e2admin.php');
?>

我究竟做错了什么?

您在链接中使用del作为参数

<a href="delete.php?del='.$row['ID'].'">Delete<br>

这需要关闭

<a href="delete.php?del='.$row['ID'].'">Delete</a><br>

在删除脚本中,您需要将其作为

$id = (int)$_GET["del"];

并在查询中用作

mysql_query("DELETE FROM e2teams WHERE ID = $id");

您可以在引号之间的数组内访问变量:

更改以下行

mysql_query("DELETE FROM e2teams WHERE ID = $_GET[id]");

mysql_query("DELETE FROM e2teams WHERE ID = " . $_GET['id']);

这是一种安全风险,您可以接受SQL注入。 请谷歌:“ PHP SQL注入”。

这个:

mysql_query("DELETE FROM e2teams WHERE ID = $_GET[id]");

应该:

mysql_query("DELETE FROM e2teams WHERE ID = ".$_GET['del']."");

因为:

<a href="del.php?del='.$row['ID'].'"> //the get var name is: del

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM