通过PHP从DDBB中删除行

时间:2019-04-29 16:25:05

标签: php database alert

我的数据库中有下表:

CREATE TABLE subjects (
  subject_id int(11) NOT NULL AUTO_INCREMENT,
  subject text,
  PRIMARY KEY (subject_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

我通过以下方式(index.php)在php中显示此表:

<table class="subjects">
    <tr>
        <th colspan="3" style="border-top-left-radius: 15px; border-top-right-radius: 15px;"><h2>Asignaturas</h2></th>
    </tr>
    <tr>
        <th> Asignatura </th>
        <th> Eliminar </th>
    </tr>

    <?php
    $sql = "SELECT * FROM subjects"; /*Select from table name: subjects*/
    $result = $conn->query($sql); /*Check connection*/

    if ($result->num_rows==0){

        echo '<p style="color: blue; text-align: center; font-size: 20px;">No hay asignaturas</p>';

    }else{
        while($row = $result->fetch_assoc()) {
            echo "</td><td>".$row["subject"]."</td><td><a class='eliminate' onClick=\"javascript: return confirm('Please confirm to delete');\" href=\"deleteSubject.php?id=".$row['subject_id']."\">X</a></td></tr>";
        }
    }
    ?>
</table>

和deleteSubject.php就像这样:

<?php
include('Conexion.php');
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$subject_id = $_GET['subject_id']; // $id is defined

mysqli_query($conn,"DELETE FROM subjects WHERE subject_id='".$subject_id."'");
mysqli_close($conn);

我遇到的问题是,当我单击X时,它不允许我删除主题。它向我显示了可以删除的确认警报,但它没有执行任何操作,只是刷新了index.php。页面,但不删除任何内容。

有人可以帮我看看错误在哪里吗?谢谢

2 个答案:

答案 0 :(得分:1)

当您请求删除时,您正在传递变量id,但试图访问subject_id中的变量$_GET['subject_id']

改为尝试$_GET['id']

此外,请确保验证值是有效的id,并使用准备好的语句来提高安全性,因为您有一个巨大的SQL注入漏洞(如所述)。

答案 1 :(得分:1)

错误在这里

IFERROR

应该是

#REF!

您需要在对id进行任何操作之前验证查询字符串,这对于停止sql注入或XSS攻击是必需的