我有以下代码,我开始调用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();
非常感谢。
答案 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);