mysql_insert_id() 总是返回0

来源:7-5 PHP数据库操作之插入新数据到MySQL中

金泽城

2017-03-13 15:11

我在本地建了数据库和相关测试代码,并把代码改为 mysqli_insert_id ,同样也是返回 0;

在网上搜了这个问题,没有看到一个有效的答案,基本上都是在解释什么情况下会返回 0 ,但实际情况是:什么都正确的情况下(数据库表的id字段也是自增字段,也没有使用DELAYED关键字)就是没有按照这个函数的描述那样,返回刚插入的这条记录的真正 id ,而是始终返回 0 ,不管操作多少次都是如此;

写回答 关注

3回答

  • qq_前行_5
    2017-03-14 11:19:35
    已采纳

    使用了DELAYED关键字。使用这个关键字后,执行插入语句时不会立即插入,而是会进入一个队列。数据库会在后台依次处理这个队列里的内容。所以SQL语句执行完毕后,由于数据未插入,就得不到最后插入的ID。

    金泽城

    非常感谢!

    2017-04-03 12:30:40

    共 1 条回复 >

  • qq_仰望星空_96
    2018-08-11 16:43:41

    同样啊 楼主我也是这个问题使用了AUTO 每次INSERT也都显示成功了但是LAST_INSERT_ID()返回的还是0



    mysql> SELECT *FROM a1;

        -> //

    +-------+----------+

    | us_id | username |

    +-------+----------+

    |     1 | A        |

    |     2 | B        |

    |     3 | C        |

    |     4 | TOM%     |

    |     5 | D        |

    +-------+----------+

    5 rows in set (0.00 sec)



    mysql>  SELECT LAST_INSERT_ID()//

    +------------------+

    | LAST_INSERT_ID() |

    +------------------+

    |                0 |

    +------------------+

    1 row in set (0.00 sec)


  • qq_前行_5
    2017-03-14 11:20:51

    可能是这个网站的安全防护措施把,不可能让人直接插数据进数据库的

    白砂糖K 回复金泽城

    压根就没有插入把,你拿var_dump(mysql_query($sql))返回的都是false

    2017-06-14 17:08:41

    共 2 条回复 >

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181907 学习 · 2654 问题

查看课程

相似问题