MySQL INSERT没有显示在数据库中,也没有错误


Mysqli INSERT not showing in database and no errors

我正试图将这些信息插入到我的数据库中,我为SELECT查询设置了几乎相同的代码,它们可以工作。我尝试的任何INSERT查询都不起作用。

这个函数返回true,我已经响应了这个函数创建的查询,并使用PHPMyAdmin运行SQL查询,它将在数据库中显示,但当通过这个php代码执行时,INSERT永远不会显示在数据库中。

EDIT:我注意到,我的一列(orderID)被设置为自动递增,每次运行此函数时都会增加,但无论出于何种原因,查询实际上并没有被放入表中

此图显示29的orderID丢失,我通过执行两个PHPMyAdmin INSERT查询得到了这些表结果,然后一个使用函数,另一个使用PHPMyAadmin。我的功能有没有可能删除插入

function add_to_cart($user_id, $product_id, $quantity) {
global $mysqli;
    if($result = $mysqli->query("INSERT INTO orders (userID, productID, quantity, orderDate) VALUES ('$user_id', '$product_id', '$quantity', NOW())")){
         return $result;
    }
return false;
}

连接到数据库的用户对数据库具有完全权限,因此这不应该是的问题

我能够通过在$mysqli->query() 之后添加$mysqli->commit();来解决问题

我需要这样做,因为我更改了默认选项,并使用了"SET AUTOCOMMIT = 0"

取出后,我可以移除$mysqli->commit()

function add_to_cart($user_id, $product_id, $quantity) {
    global $mysqli;
    if($result = $mysqli->query("INSERT INTO orders (userID, productID, quantity, orderDate) VALUES ($user_id, $product_id, $quantity, NOW())")){
        if (!$mysqli->commit()) {
            print("Transaction commit failed'n");
        }
        return $result;
    }
    die($mysqli->error());
}

根据其他大量同类问题判断,您只是在错误的数据库中查找结果。

说到功能本身,它是臃肿和不安全的。

你应该使用事先准备好的陈述。

function add_to_cart($user_id, $product_id, $quantity) {
    global $pdo;
    $sql = "INSERT INTO orders (userID, productID, quantity, orderDate) VALUES (?, ?, ?, NOW())";
    $pdo->prepare($sql)->execute(func_get_args());
}

返回任何内容都没有意义,因为在出现错误时会抛出异常。即使有,像IF result == true THEN return true ELSE return false这样的重言式仍然没有用处。您可以简单地返回结果本身。