我有一张表,经常插入新数据.我需要获取表格的最后一个ID.我怎样才能做到这一点?
它类似SELECT MAX(id) FROM table吗?
我有这个测试表:
CREATE TABLE IF NOT EXISTS `test` (
`id` INT(10) AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4;
Run Code Online (Sandbox Code Playgroud)
使用这三个中的任何一个插入
INSERT INTO `test` (`id`) VALUES (NULL);
INSERT INTO `test` (`id`) VALUES (0);
INSERT INTO `test` () VALUES ();
Run Code Online (Sandbox Code Playgroud)
发行
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
但查询总是会导致0.
PHP mysql_insert_id和PDO::lastInsertId()收益也没有结果.
我整整一天都在玩弄它无法让它发挥作用.想法?
SELECT LAST_INSERT_ID() as id FROM table1
Run Code Online (Sandbox Code Playgroud)
为什么此查询有时会返回除table1之外的另一个表的最后插入的id?我在Node.js(db-mysql插件)中调用它,我只能进行查询.
在执行INSERT查询时,是否有从MySQL/PHP返回的内容?这是我在CLASS中的功能.
function mysqlQuery($query) {
// Gets the results from the query
$results = mysql_query($query, $this->connection);
// Loops through the queried results as an multi-dimensional array
while($rows = mysql_fetch_array($results, MYSQL_ASSOC)) {
// Push results to single array
$rs[] = $rows;
}
// Return results as array
return $rs;
}
Run Code Online (Sandbox Code Playgroud)
这就是我调用函数的方式
$rs = $dbh->mysqlQuery($query);
Run Code Online (Sandbox Code Playgroud)
但执行INSERT查询时,$ rs不返回任何内容.我的功能需要帮助还是默认行为?任何提示也会有所帮助.
DUH,谢谢你提醒我它返回TRUE/FALSE.由于某种原因,我把它放在脑子里它实际上返回了另一个值,但在查看我的函数后,我看到我没有检查TRUE/FALSE条件并且只循环遍历结果数组.
感谢所有正确的答案,但首先要正确回答得分,干杯!