Mysqli INSERT未显示在数据库中且没有错误

时间:2013-12-02 18:37:12

标签: php mysql sql insert mysqli

我正在尝试将此信息插入到我的数据库中,我对SELECT查询实际上具有相同的代码设置并且它们有效。我尝试的任何INSERT查询都不起作用。

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

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

This Image显示缺少29个orderID,我通过执行2个PHPMyAdmin INSERT查询获得了这些表结果,然后使用该函数获得了一个,并使用PHPMyAdmin获得了一个。我的功能是否可以删除插入?

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;
}

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

2 个答案:

答案 0 :(得分:1)

我可以在$mysqli->commit();

之后添加$mysqli->query()来解决问题

我需要这样做,因为我更改了默认选项并且"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());
}

答案 1 :(得分:0)

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

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

您应该使用准备好的陈述。

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这样的重言式。您只需返回结果本身即可。