为什么查询出的id号不对?

为什么查询出的id号不对?

为什么id号直接从12变成15了?中间有一次插入失败。还有为什么mysqli_insert_id查询出的id是16,每次插入两条记录,它只返回第一条的id???

http://img1.sycdn.imooc.com//climg/5c775c4e0001892208250770.jpg

http://img1.sycdn.imooc.com//climg/5c775c55000178be04850560.jpg

http://img1.sycdn.imooc.com//climg/5c775c780001be2805500233.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

6回答

你好,  INSERT INTO users(`name`,age) VALUES('rose','20'),('mofey','23')";改SQL为批量插入使用

mysqli_insert_id()改函数获取id值时会冲突,如果解决您的问题请采纳,祝学习愉快!

提问者 雨之赞歌 2019-02-28 18:15:48

老师说的是这样吗?  可是结果又显示只插入了1条数据


<?php
header('content-type:text/html;charset=utf-8');

// 连接mysql数据库
$link=mysqli_connect('localhost','root','root');

//判断数据库是否连接成功
if (mysqli_connect_error()!=null){
   exit(mysqli_connect_error());
}

//选择数据库
mysqli_select_db($link,'test');

//指定字符集
mysqli_set_charset($link,'utf8');

//写SQL语句
$sql1="INSERT INTO users(`name`,age) VALUES('张三','20')";
$sql2="INSERT INTO users(`name`,age) VALUES('李四','20')";

//发送并执行SQL语句
$data1=mysqli_query($link,$sql1);
$data2=mysqli_query($link,$sql2);

//解析结果集
if ($data1 && $data2){
   echo "共插入了".mysqli_affected_rows($link)."条数据<br/>";
   echo "上一次操作的id号为".mysqli_insert_id($link);
}else{
   echo mysqli_error($link);
}

//关闭mysql连接
mysqli_close($link);

http://img1.sycdn.imooc.com//climg/5c77b4cf0001c31d04000141.jpg

  • 提问者 雨之赞歌 #1
    我明白了,mysqli_affected_rows函数只能查询出上一次操作影响的记录,把它写在mysqli_query函数下面就好了。。
    2019-02-28 18:19:57
提问者 雨之赞歌 2019-02-28 17:32:08

再重新发一下

<?php
header('content-type:text/html;charset=utf-8');

// 连接mysql数据库
$link=mysqli_connect('localhost','root','root');

//判断数据库是否连接成功
if (mysqli_connect_error()!=null){
   exit(mysqli_connect_error());
}

//选择数据库
mysqli_select_db($link,'test');

//指定字符集
mysqli_set_charset($link,'utf8');

//写SQL语句
$sql="INSERT INTO users(`name`,age)
VALUES('rose','20'),('mofei','23')";

//发送并执行SQL语句
$data=mysqli_query($link,$sql);

//解析结果集
if ($data){
   echo "共插入了".mysqli_affected_rows($link)."条数据<br/>";
   echo "上一次操作的id号为".mysqli_insert_id($link);
}else{
   echo mysqli_error($link);
}

//关闭mysql连接
mysqli_close($link);

数据表结构(代码中可以看到):
http://img1.sycdn.imooc.com//climg/5c77aa490001e84f11730206.jpg

此时插入了两条数据,可是返回的id号却是1

http://img1.sycdn.imooc.com//climg/5c77aa940001891414260881.jpg

提问者 雨之赞歌 2019-02-28 17:18:02

这是数据表结构

http://img1.sycdn.imooc.com//climg/5c77a745000167d312680164.jpg

提问者 雨之赞歌 2019-02-28 17:16:36

<?php
header('content-type:text/html;charset=utf-8');

// 连接mysql数据库
$link=mysqli_connect('localhost','root','root');

//判断数据库是否连接成功
if (mysqli_connect_error()!=null){
   exit(mysqli_connect_error());
}

//选择数据库
mysqli_select_db($link,'test');

//指定字符集
mysqli_set_charset($link,'utf8');

//写SQL语句
$sql="INSERT INTO users(`name`,age)
VALUES('rose','20'),('mofey','23')";

//发送并执行SQL语句
$data=mysqli_query($link,$sql);

//解析结果集
if ($data){
   echo "共插入了".mysqli_affected_rows($link)."条数据<br/>";
   echo "上一次操作的id号为".mysqli_insert_id($link);
}else{
   echo mysqli_error($link);
}

//关闭mysql连接
mysqli_close($link);



提问者 雨之赞歌 2019-02-28 12:34:51

是否mysqli_insert_id函数只能查询对插入的第一条数据的自增长id进行查询,多条就不行?

  • guly #1
    你好,mysqli_insert_id() 函数返回最后一个查询中自动生成的 ID(通过 AUTO_INCREMENT 生成)。如果解决您的问题请采纳,祝学习愉快!
    2019-02-28 15:21:07
  • 提问者 雨之赞歌 回复 guly #2
    可是为什么在我的结果中,插入了两条记录,查询的是第一条记录的id?
    2019-02-28 16:00:18
  • guly 回复 提问者 雨之赞歌 #3
    你好,如果您的操作有问题建议以正确的格式贴出sql代码,以及数据库的结构,不要截图,老师方便测试并准确定位您的问题,祝学习愉快!
    2019-02-28 17:11:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师