Как удалить категорию и ее данные с помощью pdo? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь удалить категорию и ее данные из базы данных с помощью INNER JOIN.Но при неверных параметрах ошибка.Ошибка:

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in D:\wamp\www\p\admin\DelCat.php:25 Stack trace: #0 D:\wamp\www\p\admin\DelCat.php(25): PDOStatement->execute(Array) #1 {main} thrown in D:\wamp\www\p\admin\DelCat.php on line 25

Я использовал такие параметры, как использование в mysqli oop, не знаю, как задать параметры в pdo.

Вот мой код на странице удаления

if (isset($_GET['cat_id']) && is_numeric($_GET['cat_id'])){
    $catid = filterString($_GET['cat_id']);
    $stmt = $pdo->prepare('DELETE FROM categories AS c 
                            INNER JOIN products AS p ON p.cat_id = :c.catid
                            INNER JOIN orders AS o ON o.cat_id = :c.cat_id WHERE c.cat_id = :p.catid AND c.cat_id = :o.cat_id ');
    $del = $stmt ->execute(array('cat_id' =>$catid, 'catid' =>$catid, 'catid' =>$catid));
    if($del){
        $_SESSION['message'] = "Category Deleted!";       
        header("location: succes.php");
        exit(); 
    }else{
        $_SESSION['message'] = "Something went wrong!";       
        header("location: error.php");
        exit(); 
    }
}

ВТОРАЯ ПОПРОБОВАТЬ: Я пытался, как это хорошо, он перенаправил меня на error.php без каких-либо ошибок.

if (isset($_GET['cat_id']) && is_numeric($_GET['cat_id'])){
    $catid = filterString($_GET['cat_id']);
    $sql = "DELETE FROM categories 
                        INNER JOIN products ON products.cat_it = categories.cat_id
                        INNER JOIN orders ON orders.catid = categories.cat_id 
                        WHERE categories.cat_id = ?  AND products.catid = ? AND  orders.cat_id = ?";
        $stmt = $pdo->prepare($sql);
        $del = $stmt ->execute($catid);
    if($del){
        $_SESSION['message'] = "Category Deleted!";       
        header("location: succes.php");
        exit(); 
    }else{
        $_SESSION['message'] = "Something went wrong!";       
        header("location: error.php");
        exit(); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...