Sylar Appiah Ответов: 1

Как отредактировать таблицу базы данных с помощью PHP и переменных, хранящихся в функции $_session


я пытаюсь отредактировать свои данные, уже хранящиеся в базе данных, мне нужна помощь, чтобы написать эту часть кода.
помоги мне закончить эту часть
 //Edit category 
    if(isset($_POST['editCategory']) && !empty($_POST['editCategory'])){

What I have tried:

<pre><?php   
    session_start();
    include '../controller/dbConnection.php';

    if(isset($_GET['edit']) && !empty($_GET['edit'])){
        $edit_id = (int)$_GET['edit'];
        $edit_id = filter_var($edit_id,FILTER_VALIDATE_INT);
        
        //for child 
        $sql_child = "SELECT * FROM category WHERE id='$edit_id'";       
        $result_child = $db->query($sql_child);
        $child_row = mysqli_fetch_assoc($result_child);
        $item_parent_id = $child_row['parent'];

        //for parent 
        $sql_parent = "SELECT * FROM category WHERE id='$item_parent_id'"; 
        $result_parent = $db->query($sql_parent);
        $parent_row = mysqli_fetch_assoc($result_parent);

        $_SESSION['edit_id'] = $edit_id;
        $_SESSION['parent_name'] = $parent_row['categoryName'];
        $_SESSION['child_name'] = $child_row['categoryName'];
        $_SESSION['parent_id'] = $parent_row['id'];

        header('Location: ../admin/category.php');
        die();

    }
    //delete category
    if(isset($_GET['delete']) && !empty($_GET['delete'])){
        $delete_id = (int)$_GET['delete'];
        $delete_id = filter_var($delete_id,FILTER_VALIDATE_INT);
        $sql = "SELECT * FROM category WHERE id = '$delete_id'";
        $result = $db->query($sql);
        $delete_category = mysqli_fetch_assoc($result);
        if($delete_category['parent'] == 0){
            $dsql1 = "DELETE FROM category  WHERE parent = '$delete_id'";
            $dsql2 = "DELETE FROM category  WHERE id = '$delete_id'";
            $db->query($dsql1);
            $db->query($dsql2);
        }else{
            $dsql = "DELETE FROM category  WHERE id = '$delete_id'";
            $db->query($dsql);
        }
       
    }
    //Add category 
    if(isset($_POST['addCategory']) && !empty($_POST['addCategory'])){
       
        $parent = filter_var($_POST['parent'],FILTER_SANITIZE_STRING);
        $category = filter_var($_POST['category'],FILTER_SANITIZE_STRING);
        $error = null;
        //category is blank
        if($category == ''){           
            $_SESSION['error'] = 'The category cannot be left blank';
            header('Location: ../admin/category.php');           
            die();
        }
        
        $sqlform = "SELECT * FROM category WHERE categoryName = '$category' AND parent = '$parent'";
        $fresult = $db->query($sqlform);
        $count = mysqli_num_rows($fresult);
        //if it already exist in database
        if($count > 0){
            $_SESSION['error'] = $category.' already exists. Please a choose a new category';
            header('Location: ../admin/category.php');            
            die();
        }
        //insert into database
        $insertsql = "INSERT INTO category (categoryName, parent) VALUES('$category','$parent')";           
        $db->query($insertsql);
        $_SESSION['success'] = 'Category has been added successfully';
        header('Location: ../admin/category.php');
        die();
    }

    //Edit category 
    if(isset($_POST['editCategory']) && !empty($_POST['editCategory'])){
        $edit = (int)$_POST['editCaregory'];
        $edit =  filter_var($_POST['editCategory'],FILTER_SANITIZE_STRING);
        $Nparent = filter_var($_POST['parent'],FILTER_SANITIZE_STRING);
        $Ncategory = filter_var($_POST['category'],FILTER_SANITIZE_STRING);
        $udpate_sql = "SELECT * FROM category WHERE categoryName = '$Ncategory' AND parent = '$Nparent' AND id = ''";


    }
?> 

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]

ZurdoDev

Где ты застрял? В чем именно заключается ваш вопрос?

1 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Основываясь на вашем коде, как написано, ваш сеанс не запустится, и $_SESSION будет непригоден для вашего использования.

Session_start(); должен быть на абсолютный первая строка.

<?php session_start();
Это само по себе может помочь вам на вашем пути - но если вы не скажете нам точно, что такое ошибка программы, то мы не будем делать лучше, чем предположить.

Ваш SQL-запрос не выполняется? Неужели он даже не работает? Если он не запускается, это ошибка подключения или что-то еще?



Sylar Appiah

начало раздела находится на другой странице, и я включил эту страницу на эту страницу. я имею в виду, что не могу написать запрос на редактирование базы данных. "последняя часть моего кода if(issect('editCategory')........... я хочу, чтобы вы помогли мне построить эту часть.

W∴ Balboos, GHB

Вы все еще не сказали, что случилось - вы что-нибудь пробовали и получили ошибку? Что же это было? Если вы не получаете сообщение об ошибке, что происходит? Если вы не видите сообщения об ошибке, то вам нужно посмотреть, как выглядит ваш SQL - все это может работать, и вы просите его изменить что-то, чего нет в вашей таблице.

Работает ли что-нибудь из этого?


Вы не можете ожидать, что я перепишу для вас весь раздел.