如何使用php删除和更新

如何使用php删除和更新,php,pdo,Php,Pdo,大家好,我一直在尝试使用php删除一个文件,我希望它删除主帖子,回复,然后更新到作者-10在他/她的观点 以下是我使用PDO的代码: <?php session_start(); if(isset($_POST['id'])){ include($root . 'dbconn.php'); $form = $_POST; $id = $form['id']; try { $db_c

大家好,我一直在尝试使用php删除一个文件,我希望它删除主帖子,回复,然后更新到作者-10在他/她的观点

以下是我使用PDO的代码:

<?php session_start(); 
    if(isset($_POST['id'])){

        include($root . 'dbconn.php');

        $form = $_POST;
        $id = $form['id'];   
        try {

            $db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
            $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $stmt = $db_conn->prepare("DELETE FROM code WHERE cid= {$id}");
            $stmt = $db_conn->prepare("DELETE FROM comment WHERE id = {$id}");
            $stmt = $db_conn->prepare("DELETE FROM likes_map WHERE lid = {$id}");
            $stmt = $db_conn->prepare("UPDATE users SET point -1 WHERE username = {$u}");
            $stmt->bindParam(':id', $id); 
            $stmt->bindParam(':cid', $id); 
            $stmt->bindParam(':lid ', $id);
            $stmt->bindParam(':u ', $_SESSION['username']);
            $stmt->execute();
            echo "deleted"
        } catch(PDOException $e) {
            echo "Error:" . $e->getMessage();
        }
        $db_conn = null;


    }else{
        echo "You are not allow to delete this";
    }
?>

第一个问题是,在同一个语句句柄上准备了多个查询,因此在准备下一个查询时失去了到该已准备语句的链接

您也只执行一次查询,而不是每个语句执行一次

另外,您准备的sql语句没有使用正确语法设置参数

在事务内部运行此代码也是一个好主意,因此,如果数据库的任何更新失败,您就不会只剩下完成此过程的一部分。这假设数据库是INNODB数据库,而不是MYISAM数据库,因为事务在MYISAM上不起作用

<?php 
    session_start(); 
    if(!isset($_POST['id'])){
        echo "You are not allow to delete this";
        exit;
    }

    include($root . 'dbconn.php');

    $form = $_POST;
    $id = $form['id'];   
    try {

        $db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
        $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        // start a transaction
        $db_conn->beginTransaction();

        $d_code = $db_conn->prepare("DELETE FROM code WHERE cid= :id");
        $d_code->bindParam(':id', $id); 

        $d_comment = $db_conn->prepare("DELETE FROM comment WHERE id = :id");
        $d_comment->bindParam(':id', $id); 

        $d_like = $db_conn->prepare("DELETE FROM likes_map WHERE lid = :id");
        $d_like->bindParam(':id ', $id);

        $u_user = $db_conn->prepare("UPDATE users SET point -1 WHERE username = :u");
        $u_user->bindParam(':u ', $_SESSION['username']);


        $d_code->execute();
        $d_comment->execute();
        $d_like->execute();
        $u_user->execute();

        $db_conn->commit();

        echo "deleted";

    } catch(PDOException $e) {
        $db_conn->rollBack();
        echo "Error:" . $e->getMessage();
    }
    $db_conn = null;

?>

您的问题是?@RST不起作用。它将显示已删除,但不会有任何帮助