mysqli_insert_id没有用

时间:2012-03-02 09:17:08

标签: mysqli auto-increment

我有以下代码,我开始调用auto_increment id

$sql = "INSERT INTO tablename (x1, x2) VALUES(?,?)";
            if($query = $db->prepare($sql)){
                $query->bind_param('ss', $x1, $x2);
                $query->execute();

                $id = mysqli_insert_id($query);

因为我不知道为什么这不起作用。我也试过了

$id = mysqli_insert_id($sql);

$id = mysqli_insert_id();

有人可以请那么友好,并会说出我做错了什么?我刚决定使用mysqli。在此之前我只使用了mysql,我没有问题

$id = mysql_insert_id();

非常感谢。

4 个答案:

答案 0 :(得分:3)

您必须将mysqli 链接传递给mysqli_insert_id(),而不是查询:

$link   = mysqli_connect("localhost", "my_user", "my_password", "world");
$sql    = "INSERT INTO tablename (x1, x2) VALUES(?,?)"
$result = mysqli_query($link, $sql);

$id     = mysqli_insert_id($link);

或者因为你使用的是面向对象的风格:

// ...
$id     = $mysqli->insert_id;

答案 1 :(得分:1)

可能类似

$query->commit(); OR $query->close();

答案 2 :(得分:0)

 $result = mysql_query($sql);

        if(!$result) {
        {
             die('Error: ' . mysql_error());

        } else {

        echo "<p>Done!.</p>";

        }

试试这个并检查输出......

答案 3 :(得分:0)

最好坚持 OOP 风格。它会减少你的困惑。在 OOP 风格中,您只需要访问对象上的属性。例如:

$stmt = $db->prepare($sql);
$stmt->bind_param('ss', $x1, $x2);
$stmt->execute();
// Either one will work
$stmt->insert_id;
$db->insert_id;

如果你想使用程序化的 mysqli 风格,那么你必须记住有两个函数。一个用于 mysqli 对象,另一个用于 mysqli_stmt 对象。您需要选择其中之一,但必须将正确的对象传递给它。

// For mysqli_stmt object
mysqli_stmt_insert_id($stmt);
// For mysqli object
mysqli_insert_id($db);