Удалить строку из DDBB через PHP - PullRequest
0 голосов
/ 29 апреля 2019

В моей базе данных есть следующая таблица:

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;

Я показываю эту таблицу в своем php следующим образом (index.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 ]

1 голос
/ 29 апреля 2019

Ошибка здесь

$subject_id = $_GET['subject_id'];

должно быть

$subject_id = $_GET['id'];

Вам необходимо проверить строку запроса перед любыми операциями с идентификатором, это необходимо для остановки SQL-инъекций или XSS-атаки

1 голос
/ 29 апреля 2019

вы передаете переменную id при запросе на удаление, но пытаетесь получить доступ к переменной subject_id в $_GET['subject_id'].

, вместо этого попробуйте $_GET['id'].

также убедитесь, что значение валидного идентификатора подтверждено, и используйте подготовленные операторы для повышения безопасности, так как у вас есть огромная уязвимость SQL-инъекций, как кто-то упоминал.

...