无法让mysqli_insert_id正常工作

3

我已经试了几个小时也无法让它正常工作。下面是我正在使用的代码。我正在处理一个phpbb页面,这个页面中包括模板和SQL查询设置。

$sql_query = 'INSERT INTO ' . rosters . ' ' . $db->sql_build_array('INSERT', $sql_rost);
$result_rost = $db->sql_query($sql_query);

$roster_last = $mysqli->insert_id;

 $template->assign_block_vars('some_block', array(
    'ROSTER'    => $roster_last,
    'TEST' =>'test'
));
$db->sql_freeresult($result_rost);

插入查询成功,因为我在数据库中看到了新条目,并且在模板中使用了TEST来确保该块正在显示,而它确实显示出来了。

另外,我没有使用

mysqli_insert_id($link) 

因为我已经使用另一段代码连接到数据库,所以不想再复制一个数据库连接。如果没有 $link,我会得到一个错误,提示需要传递另一个参数给 mysqli_insert_id

1个回答

2
我认为你不能使用mysql来查询,然后使用mysqli来获取ID。 尝试这样做:
$db->insert_id;

编辑:我注意到你说你正在使用phpbb。

phpbb维基建议如下:

$db->sql_nextid();

来源:https://wiki.phpbb.com/Database_Abstraction_Layer

数据库抽象层(Database Abstraction Layer,简称为DAL)是一种在应用程序和数据库之间提供一个中间层的技术。它允许开发人员使用统一的方式来访问不同类型的数据库,而无需了解底层数据库的细节。

通过使用DAL,开发人员可以更轻松地维护和更新他们的应用程序,因为他们只需要修改DAL而不是应用程序本身。此外,DAL还可以提高应用程序的性能和安全性,因为它可以防止SQL注入攻击等常见的安全漏洞。


谢谢回答。我刚刚尝试了这个,但没有成功。 - megellana80
我编辑了我的帖子。请尝试这个,如果不行可以查看维基百科获取更多信息。 - dimitar veselinov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接