php - 为什么我必须使用 PDO 启动事务,然后提交它才能从 MySQL DB 中删除数据

标签 php mysql pdo

当我运行这段代码时

<?php

include '../bin/config.php';
connect();

if (isset($_GET['id']) && is_numeric($_GET['id'])){

    $id = $_GET['id'];
    $stmt = $conn->prepare("DELETE FROM noteline WHERE Nid = ?");
    $stmt->bindParam(1, $id, PDO::PARAM_INT);

    $outcome = $stmt->execute();

    if ($outcome){

        echo 'it was successfully deleted';
        header("Location: ../noteline");
    }else {

        echo 'it was not successful due to something';
    }
}


?>

它回显“已成功删除”,但我的数据库中没有删除任何内容... 但是当我通过修改此代码开始交易时,如下所示:

<?php

include '../bin/config.php';
connect();

if (isset($_GET['id']) && is_numeric($_GET['id'])){

    $id = $_GET['id'];
    $stmt = $conn->prepare("DELETE FROM noteline WHERE Nid = ?");
    $stmt->bindParam(1, $id, PDO::PARAM_INT);

    $conn->beginTransaction();
    $outcome = $stmt->execute();

    if ($outcome){

        $conn->commit();
        echo 'it was successfully deleted';
        header("Location: ../noteline");
    }else {

        echo 'it was not successful due to something';
    }
}


?>

我的数据终于从我的 MySQL 数据库中删除了! 我想知道为什么?

最佳答案

因为 PDO 连接在禁用自动提交模式的情况下运行。查看 connect() 函数以确保您没有禁用此模式。

(此外,我发现您正在使用全局变量来存储连接对象。尽可能避免全局变量。)

关于php - 为什么我必须使用 PDO 启动事务,然后提交它才能从 MySQL DB 中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301826/

相关文章:

php - 我如何在mysql中查询两个不同的表

php - 以同一表单提交将第三个表中的外键插入到两个不同的表中

php - 如何获取MYSQL相关搜索结果

php - PHP的socket_recv MSG_PEEK标志是什么意思?

php - 通过 AJAX、PHP 和 MYSQL 传递参数时返回多个值

javascript - 获取从 HTML 表单计算得出的 JavaScript 数据,并将其作为新元素添加到同一表单操作中以使用 PHP 保存

mysql - 如何使用 MySql 将 CSV 文件上传到多个数据库表中?

mysql - centos mysql5.5通过puppet安装

mysql - 如何与另一个有计数的表连接?

php - MYSQL在不同情况下给出相同的响应 '0 rows affected'