php mysql 到表最后_如何在PHP中获取MySQL表的最后插入ID?
如何在PHP中获取MySQL表的最后插入ID?
我有一张表,经常插入新数据。 我需要获取表格的最后一个ID。 我怎样才能做到这一点?
它类似于SELECT MAX(id) FROM table吗?
gweg asked 2019-09-09T20:56:18Z
22个解决方案
123 votes
如果您使用的是PDO,请使用mysql_insert_id。
如果您使用的是Mysqli,请使用mysql_insert_id。
如果你还在使用Mysql:
请不要在新代码中使用mysql_insert_id函数。 它们不再维护,并且已被正式弃用。 看到红色的盒子? 了解准备好的语句,并使用PDO或MySQLi - 本文将帮助您确定哪些。 如果您选择PDO,这是一个很好的教程。
但如果必须,请使用mysql_insert_id。
deceze answered 2019-09-09T20:56:57Z
50 votes
有一个函数可以知道当前连接中插入的最后一个id是什么
mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
$id = mysql_insert_id();
加上使用max是一个坏主意,因为如果你的代码在两个不同的会话中同时使用,它可能会导致问题。
该函数名为mysql_insert_id
RageZ answered 2019-09-09T20:57:33Z
21 votes
没关系。 你也可以使用LAST_INSERT_ID()
x2. answered 2019-09-09T20:57:56Z
18 votes
使用PDO:
$pdo->lastInsertId();
使用Mysqli:
$mysqli->insert_id;
请不要在新代码中使用mysql_*函数。 它们不再维护,并且已被正式弃用。 看到红色的盒子? 了解准备好的语句,并使用PDO或MySQLi - 本文将帮助您确定哪些。 如果您选择PDO,这是一个很好的教程。
Neal answered 2019-09-09T20:58:33Z
9 votes
使用mysql_insert_id()函数。
在这里看到类似的问题
NawaMan answered 2019-09-09T20:59:02Z
7 votes
你写的内容会给你最大的mysql_insert_id,假设它们是唯一的并且自动递增,假设你可以选择并发问题就可以了。
由于您使用MySQL作为数据库,因此具有特定功能mysql_insert_id,该功能仅适用于执行插入的当前连接。
PHP提供了一个特定的功能,也称为mysql_insert_id。
dlamblin answered 2019-09-09T20:59:39Z
4 votes
您可以通过内置的php函数mysql_insert_id();获取最新的插入ID
$id = mysql_insert_id();
你也得到了最新的id
$id = last_insert_id();
Rahul answered 2019-09-09T21:00:12Z
3 votes
在codeigniter中获取最后插入的id执行插入查询后,只需在数据库中使用一个名为insert_id()的函数,它将返回最后插入的id
例如:
$this->db->insert('mytable',$data);
echo $this->db->insert_id(); //returns last inserted id
在一条线上
echo $this->db->insert('mytable',$data)->insert_id();
Narsimha answered 2019-09-09T21:00:45Z
3 votes
可以使用mysql_insert_id(),但是有一个关于使用它的特定说明,你必须在执行INSERT查询后调用它,意味着在同一个脚本会话中。如果你使用它,否则它将无法正常工作。
Mihail Dimitrov answered 2019-09-09T21:01:10Z
3 votes
试试这应该工作正常:
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "INSERT blah blah blah...";
$result = mysqli_query($link, $query);
echo mysqli_insert_id($link);
Sandhu answered 2019-09-09T21:01:34Z
1 votes
注意:如果使用一个语句执行多个插入,则mysqli :: insert_id将不正确。
桌子:
mysqli::insert_id + mysqli::affected_rows) - 1
现在,如果你这样做:
mysqli::insert_id + mysqli::affected_rows) - 1
mysqli :: insert_id将是1而不是3。
要获得正确的值,请执行:
mysqli::insert_id + mysqli::affected_rows) - 1
这是文件,但有点模糊。
bartonlp answered 2019-09-09T21:02:44Z
1 votes
我更喜欢使用纯MySQL语法来获取我想要的表的最后一个auto_increment id。
php mysql_insert_id()和mysql last_insert_id()只给出最后一个事务ID。
如果您想要架构中任何表的最后一个auto_incremented ID(不仅是最后一个事务),您可以使用此查询
SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'my_database'
AND TABLE_NAME = 'my_table_name';
而已。
syjust answered 2019-09-09T21:03:27Z
1 votes
很遗憾没有看到任何一个例子的答案。
使用Mysqli :: $ insert_id:
$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
$mysqli->query($sql);
$last_inserted_id=$mysqli->insert_id; // returns last ID
使用PDO :: lastInsertId:
$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
$database->query($sql);
$last_inserted_id=$database->lastInsertId(); // returns last ID
Rust answered 2019-09-09T21:04:03Z
1 votes
干净简单 -
$selectquery="SELECT id FROM tableName ORDER BY id DESC LIMIT 1";
$result = $mysqli->query($selectquery);
$row = $result->fetch_assoc();
echo $row['id'];
Hitesh answered 2019-09-09T21:04:28Z
0 votes
使用MySQLi交易我有时无法获得mysqli::$insert_id,因为它返回0.特别是如果我使用存储过程,则执行INSERTs。 所以交易中还有另一种方式:
function getInsertId(mysqli &$instance, $enforceQuery = false){
if(!$enforceQuery)return $instance->insert_id;
$result = $instance->query('SELECT LAST_INSERT_ID();');
if($instance->errno)return false;
list($buffer) = $result->fetch_row();
$result->free();
unset($result);
return $buffer;
}
?>
BlitZ answered 2019-09-09T21:04:54Z
0 votes
使用mysqli作为mysql正在进行描述
$mysqli = new mysqli("localhost", "yourUsername", "yourPassword", "yourDB");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
// Conside employee table with id,name,designation
$query = "INSERT INTO myCity VALUES (NULL, 'Ram', 'Developer')";
$mysqli->query($query);
printf ("New Record has id %d.\n", $mysqli->insert_id);
/* close connection */
$mysqli->close();
?>
Poorna Rao answered 2019-09-09T21:05:19Z
0 votes
我试过了
mysqli_insert_id($ dbConnectionObj)
这将返回当前连接的最后插入ID,因此如果您正确管理连接,这应该有效。 至少为我工作过。
user2166373 answered 2019-09-09T21:05:57Z
0 votes
请使用PDP,然后试试这个
$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();
Humphrey answered 2019-09-09T21:06:22Z
-1 votes
$ lastid = mysql_insert_id();
Treby answered 2019-09-09T21:06:48Z
-1 votes
通过所有这些讨论,我假设检查最大id的原因是知道下一个id应该是什么...(如果我的最大id为5,则接下来将是5 + 1 = 6)。
>>如果这不是原因,我最好的道歉
如果其他人在您的CHECK和INSERT之间插入信息会给您错误的ID。
因此,如果您要创建可包含时间戳或其他唯一值的哈希,则可以解决此问题。
然后在同一个函数中,您可以使用空值和哈希值插入信息。 如果您选择了AUTO_INCRECEMENT,那将创建ID。
然后在同一个函数中你仍然会有你的哈希值,你可以找到具有相同哈希值的id。然后你可以使用mysql UPDATE完成填充空值。
这包括更多的连接,但它仍然是一种方法...
祝你好运解决它。
Aurimas answered 2019-09-09T21:07:57Z
-2 votes
如果您的表具有类似UserID,Emp_ID,...的AUTO INCREMENT列,那么您可以使用此查询来获取最后插入的记录SELECT * FROM table_name其中UserID =(从table_name中选择MAX(UserID))在PHP代码中:
$con = mysqli_connect('localhost', 'userid', 'password', 'database_name');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
$sql = "SELECT * FROM table_name where UserID=(select MAX(UserID)from table_name)";
$result = mysqli_query($con, $sql);
然后,您可以使用提取的数据作为您的要求
Naveen1425 answered 2019-09-09T21:08:28Z
-3 votes
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", ***mysql_insert_id()***);
khamar Balkrishna answered 2019-09-09T21:08:48Z
php mysql 到表最后_如何在PHP中获取MySQL表的最后插入ID?相关推荐
- php mysql query 行数_如何在PHP中获取MYSQL数据库返回的数据的行数?
展开全部 1. mysql_num_rows 可得到e69da5e887aa3231313335323631343130323136353331333337383861查询记录数<?php $c ...
- java+script+当前日期_如何在JavaScript中获取当前日期?
如何在JavaScript中获取当前日期? #1楼 您可以使用扩展了 Date对象的Date.js库,从而可以使用.today()方法. #2楼 如果您想对日期格式进行更多的粒度控制,我强烈建议您查看 ...
- java文件中获取创建日期_如何在Java中获取文件的上次修改日期
java文件中获取创建日期 Sometimes we need to get the file last modified date in Java, usually for listeners li ...
- jquery 获取同级元素_如何在jQuery中获取元素的同级
jquery 获取同级元素 In this post, we will discuss how to get the siblings of an HTML element in jQuery. jQ ...
- python获取当前时间戳_如何在Python中获取当前时间戳?
在Python中可以使用来自模块time.datetime或calendar的函数来获取当前时间戳,代码语句如[import time;ts = time.time() print(ts)]. 在Py ...
- php7.2 mysql 教程_如何在PHP7中扩展mysql,先安装php7.2。后安装mysql
相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可 ...
- mysql 导入创建表空间_说说在 Oracle11g 中如何创建表空间、创建用户并授权以及导入与导出数据...
假设 Oracle11g 已在本机安装成功. 1 创建表空间 打开 sqlplus 工具:开始-->所有程序--> Oracle –OraDb11g_home1-->应用程序开发-- ...
- mysql 减少文件排序_消除更新查询中的mysql文件排序
我有这样的表用于在mysql中实现队列: CREATE TABLE `queue` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `queue_na ...
- mysql 查看用户权限_在Navicat Premium中管理MySQL用户 - 第4部分:权限管理器工具
更多资源请查看:[Navicat使用教程2019.1] | [Navicat Data Modeler使用教程] 第4部分:Privilege Manager(权限管理器)工具 在本系列教程中,我们一 ...
最新文章
- 2015年的ResNet潜力都挖掘出来了吗?新研究:不用蒸馏、无额外数据,性能还能涨一波...
- 你知道数据中心宕机的真正成本吗?
- Oracle-批量修改语句及相关知识点
- myeclipse启动php,myeclipse,jdk_启动myeclipse报错,myeclipse,jdk - phpStudy
- python+办公自动化_Python办公自动化之操作excel
- AT:配置/禁用PSM模式和设置T3324/T3412
- 7天内新闻前加 new
- java6_64.tar配置,Ubuntu 下Java-JDK6的安装与环境配置
- 配置cfree 5 支持C++11
- Re-ranking Person Re-identification with k-reciprocal Encoding笔记
- python常用模块介绍
- 程序员如何看待实力与运气
- 拉丁舞身形研究之恰恰恰
- python eml解析_如何在python中读取eml文件?
- Docker 容器的--restart参数
- 请收下这份秘籍: 这里有关于申请 gTech 职位所需知道的一切
- 找回你的xournal++未保存文档
- 跨域请求的API接口
- 夫琅禾费单缝衍射matlab分析,夫琅禾费单缝衍射光强分布MATLAB分析毕业设计论文...
- Google I/O 2021 发布 Flutter 2.2
热门文章
- 时域信号matlab实现
- isdigit()、isalpha()、isalnum() 三个函数的区别和注意点
- laravel用crud之index列出产品items
- [bzoj] 2049 洞穴勘探 || LCT
- Long Way To Go 之 Python 5 (2)
- Standard C++ Episode 10
- 深度学习——从文件中载入训练数据
- oracle查询哪些数据未压缩,求助大佬:向压缩表插入数据,压缩未生效
- 实战经验:关于Oracle Delete数据后空间重用问题的测试
- Cloudarrow V2.0 正式发布!