Удаление пользователей с помощью PDO

0

Привет всем, у меня есть проблема с моей формой деления пользователей, когда я отправляю кнопку ничего не случилось, в чем проблема, все работает на db, когда я получаю информацию, которую они приходят, но когда я нажимаю на удаление, ничего не происходит

  <?php



        $host ="localhost";
        $dbname ="justnew";
        $u_name="root";
        $u_pass="youcef02";

        echo'
             <table border="1px solid #efefef" width="42%">
          <tr>
          <th>ID</th>
            <th>Name</th>
            <th>Password</th>
        <th>DELETE</th>
          </tr>


        ';
        try{
        $Conn = new PDO("mysql:host=$host;dbname=$dbname",$u_name,$u_pass);

        }

        catch(PDOEXCEPTION $e){
        echo'There is a prblm' .$e->getMessage();

        }

        $sql = "SELECT * FROM addu";
        $result = $Conn->query($sql);

        while($row = $result->fetch(PDO::FETCH_OBJ)) {
        echo"
          <tr>
          <td>" .$row->u_id."</td>
            <td>" .$row->u_name."</td>
            <td>" .$row->u_pass."</td>
             <td><button name='dlt'><a href='attribute.php?
           type=dlt&u_id=".$row->u_id."' name='dlt'>DELETE</a></button></td>
          </tr>
        ";
        }


        if($_GET['type'] == ['dlt']){

        $id = intval ($_GET['u_id']);


        $Dsql = "DELETE * FROM 'addu' WHERE 'u_id' ='".$id."'";
            $Dresult = $Conn->exec($Dsql);



        }
        ?>        
  • 2
    if($_GET['type'] == ['dlt']) должен выдавать ошибку. Вы должны добавить проверку ошибок ко всему этому.
  • 0
    Удалить * в удалить. Также dlt это строка, а не массив
Показать ещё 2 комментария
Теги:
pdo

1 ответ

2

Видя, что никто не хотел публиковать ответ, я представляю следующее.

Как указано: if($_GET['type'] == ['dlt']) является недопустимым. Скобки вокруг dlt должны быть удалены и должны были бы вызвать синтаксическую ошибку.

  • if($_GET['type'] == 'dlt')

Тем не менее, вы должны проверить, установлен ли массив GET/не пустым, поскольку без него это также вызовет неопределенное предупреждение индекса с установкой ошибок в вашей системе.

if(isset($_GET['type']) && $_GET['type'] == 'dlt')

или же

if(!empty($_GET['type']) && $_GET['type'] == 'dlt')

Тогда часть DELETE'ing вашего запроса также недействительна.

Он должен читать:

$Dsql = "DELETE FROM 'addu' WHERE 'u_id' ='".$id."'";

Звездочка действительна только с оператором SELECT:

Воспользовавшись обработкой ошибок (PDO), вы наверняка получили бы синтаксическую ошибку:

Теперь этот бит может иметь отрицательный эффект:

<td><button name='dlt'><a href='attribute.php?
           type=dlt&u_id=".$row->u_id."' name='dlt'>DELETE</a></button></td>
          </tr>
";

Обычно (обычно) это все в одной строке:

<td><button name='dlt'><a href='attribute.php?type=dlt&u_id=".$row->u_id."'>DELETE</a></button></td>
          </tr>
        ";

Здесь можно было бы добавить дополнительные места.

Примечание. Вы дважды использовали атрибут name.

Если вышеуказанное не выполнено, <a href></a> не должно находиться внутри <button></button>, просто используйте <a href></a>.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню